hdu2114 Calculate S(n) 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2114
数学小水
题目大意:Problem Description已经说得很清楚了。
题目分析:做这个题需要一个公式(前n个自然数立方和公式)S(n)=13+23 +33 +......+n3 =[n(n+1)/2]²。当然只有这个公式是不够的。n最大到十亿所以结果会超。不用__int64的话,可以多%几遍。
以下是代码:
#include<stdio.h>
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int k=n%10000;
int a=(k*(k+1)/2)%10000;
int ans=(a*a)%10000;
if(ans/1000)printf("%d\n",ans);
else if(ans/100)printf("0%d\n",ans);
else if(ans/10)printf("00%d\n",ans);
else printf("000%d\n",ans);
}
return 0;
}
PS:做这类题需要先知道必须的知识点,没有没法做题,有了知识点,写代码就是几分钟的事。所以平时注重积累各方面基本知识也是很重要的。(另外,加的模==模的加[已证])