/*n>=m,m!+(m+1)!+...+n!这些项都是可以被m整除的,
只需要找比m小n的阶乘即可*/
#include <stdio.h>
#include <string.h>
int main()
{
int test,m,i,n,tpow;
_int64 ans,tp;
char nstr[105];
scanf("%d",&test);
while(test--)
{
n=0;
ans=tp=1;
scanf("%s %d",nstr,&m);
if(strlen(nstr)>=7)
n=m-1;
else
{
tpow=1;
for(i=strlen(nstr)-1;i>=0;--i)
{
n+=(nstr[i]-'0')*tpow;
tpow*=10;
}
}
if(n>=m)
n=m-1;
for(i=1;i<=n;++i)
{
tp=(tp*i)%m;
ans=(ans+tp)%m;
}
ans%=m;
printf("%I64d\n",ans);
}
return 0;
}
hdu3123 GCC
最新推荐文章于 2017-08-04 11:39:00 发布