智慧的邓布利多
?
?
哈利與鄧布利在尋找魂器的過程中,被困在了魔法陣中,這個魔法陣由n個石板構(gòu)成,石板從小到大排成一列。鄧布利多仔細觀察著些石板,發(fā)現(xiàn),每個石板可以近似的看成腰長為XnX_nXn?厘米的等腰直角三角形(Xn=1,2,3,4,…n X_n=1,2,3,4,…n Xn?=1,2,3,4,…n)。這時,鄧布利多對哈利說:“試試將石板放在坐標系中吧”(放置方法固定,見樣例),哈利于是將石板放在了坐標系上,發(fā)現(xiàn),正整數(shù)坐標的位置(x=0,1,2,3,4...... ;y=0,1,2,3,4........)發(fā)出了淡淡的熒光,鄧布利多思考,想要破解這個魔法陣,需要數(shù)出這n個等腰直角三角形石板上的所有的熒光標記有多少個。輸出結(jié)果取mod2048
Input
?
輸入一個正整數(shù)n(2≤n≤1,500,000,0002 \leq n \leq 1,500,000,0002≤n≤1,500,000,000)
Output
?
n個石板上的熒光標記一共有多少個
Sample Input 1
2 3 7Sample Output 1
9 19 119Hint
當 n=1n=1n=1有一個石板腰長XnX_nXn?為1等腰三角形石板放在坐標系一共有三個熒光標記,分別是(0,0),(1,0)(1,1)。所以輸出3
當 n=2n=2n=2有兩個石板
腰長Xn=1X_n=1Xn?=1 等腰三角形石板放在坐標系一共有三個熒光標記,分別是(0,0),(1,0)(1,1)
腰長Xn=2X_n=2Xn?=2 等腰三角形石板放在坐標系一共有三個熒光標記,分別是(0,0),(1,0)(2,0),(2,1),(2,2)(1,1)
所以2個石板一共 9 個熒光點!
1+2+3+.......+n=n?(1+n)/2
1^2 + 2^2 + 3^2+.......+n^2=n(n+1)(2n+1)/6
1^3+2^3+3^3+......... +n^3=[n*(n+1)/2]^2
?
利用等差數(shù)列的求和公式可以得到每一個an,之后在把這些an加起來就是答案,通過計算可以得知an=(n*n+3*n+2)/2,由題意可知1^2 + 2^2 + 3^2+.......+n^2=n(n+1)(2n+1)/6,1+2+3+.......+n=n?(1+n)/2,通過求解可以得到ans=(n*(n+1)*(2*n+1)/6+3*n*(n+1)/2+2*n)/2;
代碼:
#include <iostream> using namespace std; const int MOD=2048;int main() {long long n; scanf("%lld",&n); n%=MOD; long long ans=0; ans=n*(n+1)*(2*n+1)/6+3*n*(n+1)/2+2*n;ans/=2;cout<<ans%MOD<<endl; return 0; }?
?
?
總結(jié)
- 上一篇: codeforces div2 C.
- 下一篇: codeforces div3 D