这题首先就要找出通项公式:其前n项和为 Sn = n(n+1)(n+2)/6:
还有就是带除式的同余取模:(a/b)%c==a%(b*c)/c;所以Sn可以这样求:s1 = (n(n+1))% (20090524*6);余数里包含6是保证后面的式子可以被6整除。s2 = (s1*(n+2)/6)%20090524;
代码如下:
#include<stdio.h>
int main()
{
int t,m;
__int64 n,sum;
scanf("%d",&t);
while(t--)
{
scanf("%I64d",&n);
if(n==1)
{
printf("1\n");
continue;
}
sum=(n*(n+1))%(20090524*6);
sum=(sum*(n+2)/6)%20090524;
printf("%I64d\n",sum);
}
return 0;
}