关于求余,我们有以下的运算性质:
1.(a+b)% n = (a%n+b%n)% n;
2.(a-b)% n = (a%n-b%n )% n;
3,(a×b)% n = (a%n×b%n)% n;
4. ( a^b ) % n = ((a%n)^b) % n; 4 可由 3 简单推出。
所以对于大数
12345 % 7 = (((((1×10)% 7 +2%7)%7×10%7+3%7)%7×10%7+4%7)%7×10%7+5%7)%7;
代码如下:
#include <stdio.h>
#include <math.h>
int Mod (char s[],int n){
int m = 0;
for (int i=0;s[i]!='\0';i++)
m=((m*10)%n+(s[i]-'0')%n)%n;
return m;
}
int main (){
int n;
char s[1000];
while (~scanf ("%s%d",s,&n)){
int ans = Mod (s,n);
printf ("%d\n",ans);
}
return 0;
}