传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2576
数列an=1+2+3+……+n=n(n+1)/2
则n(n+1)(n+2)/6是数列{an}的前n项和 是高中的内容。。想起来就很简单= =。
然后别让ans溢出了就行
#include<stdio.h>
const int mod = 20090524;
int main()
{
int tot;
__int64 n, ans;
scanf("%d", &tot);
while( tot-- )
{
scanf("%I64d", &n);
ans = n * (n + 1) / 2 % (mod * 3);
ans = ans * (n + 2) / 3 % mod;
printf("%I64d\n", ans);
}
return 0;
}
hdu上是要I64d的...两次了...这次长点脑子