2 3 12 7 152455856554521 3250
2 5 1521
题意:简单来说,该题就是要我们计算A mod B的值,A是大数,而B则是一个小于100000的数。
解题思路:因为A是大数,直接取模肯定是不行了,但是同余定理中有一条可以派上用场
若a≡b(mod m), c≡d (mod m),则
ac≡bd (mod m).
所以我们不妨将A(形如a1a2a3…an)表示成(((a1*10+a2)*10+a3)*10+…)*10+an再取模即可
#pragma comment(linker, "/STACK:1024000000,1024000000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<queue> #include<math.h> #include<vector> #include<map> #include<set> #include<stdlib.h> #include<cmath> #include<string> #include<algorithm> #include<iostream> #define exp 1e-10 using namespace std; const int N = 1005; const int inf = 2147483647; const int mod = 2009; char s[N]; int main() { int n,m,i; while(~scanf("%s%d",s,&m)) { n=0; for(i=0;s[i]!='\0';i++) n=(n*10+s[i]-'0')%m; printf("%d\n",n); } return 0; }菜鸟成长记