Hdu 3123
Output the answer of (0! + 1! + 2! + 3! + 4! + ... + n!)%m.
Constrains
0 < T <= 20
0 <= n < 10^100 (without leading zero)
0 < m < 1000000
提示: n!对于n大于m的时候 n!%m=0 因为n的阶乘包括m
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n,m,cas,t;
__int64 mid,sum;
char s[1000];
scanf("%d",&cas);
while(cas--)
{
scanf("%s %d",&s,&m);
if(strlen(s)>=7)
t=m;
else sscanf(s,"%d",&t);
mid=1;
sum=1;
for(i=1;i<=t;i++)
{
mid=(mid*i)%m;
sum=(sum+mid)%m;
}
printf("%I64d\n",sum%m);//这里一定一定要%m 否则会错
}
return 0;
}