题目:http://acm.hdu.edu.cn/showproblem.php?pid=3123
题意很简单,就是同余模的简单应用。
代码如下:
#include <iostream> #include <algorithm> #include <stdio.h> #include <string.h> typedef __int64 ll; using namespace std; char a[10010]; int n,m; ll zan,sum; int main() { int T; scanf("%d",&T); while(T--) { scanf("%s%d",a,&m); sum=2; int l=strlen(a); if(l>=7) n=1000000; else { n=0; for(int i=0;i<l;i++) { if(i!=0) n*=10; n=n+(a[i]-'0'); } } zan=1; if(n==0) { printf("%d ",1%m); continue; } else if(n==1) { printf("%d ",2%m); continue; } if(n>=m) n=m-1; for(int i=2;i<=n;i++) { zan=(zan*i)%m; sum=(sum+zan)%m; } sum%=m; printf("%I64d ",sum); } return 0; }