Calculate S(n)
Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3651 Accepted Submission(s): 1414
Problem Description
Calculate S(n).
S(n)=1 3+2 3 +3 3 +......+n 3 .
S(n)=1 3+2 3 +3 3 +......+n 3 .
Input
Each line will contain one integer N(1 < n < 1000000000). Process to end of file.
Output
For each case, output the last four dights of S(N) in one line.
Sample Input
1 2
Sample Output
0001 0009
Author
天邪
Source
不用写java
因为这里分母比较小 等于4
所以只需要把取余的10000变成40000
然后最后把答案/4即可。
PS:此法不适合分母特别大的情况。
一般的,取余的数往往是一个质数,所以应该求逆元
但是这里不互质,所以才这么做的。恩
我的代码:(很短)
#include<stdio.h>
int main()
{
__int64 n,ans;
while(scanf("%I64d",&n)!=EOF)
{
ans=(n*n%40000)*((n+1)*(n+1)%40000)%40000;
ans=ans/4;
printf("%04I64d\n",ans);
}
return 0;
}