大数取余(C++)
1 /*大数取余-------mod 为 (int范围)*/ 2 /* 具体做法: 3 从大数最高位开始,只要其大于mod 4 就实行取余,一直下去,最终得到余数 5 例如:123 % 4 取一个中间变量t=0 6 1<4 t=1 7 --- 2 t=1*10+2=12>4 t=t%4=0 8 --- 3 t=0+3=3 t=t%4=3 9 -------------------- 余数 3 10 */ 11 #include<iostream> 12 #include<string> 13 #include<cstring> 14 using namespace std; 15 16 int MOD(string a,int mod) 17 { 18 int len=a.length(),i; 19 int t=0;//中间变量,最终存储余数 20 for(i=0;i<len;i++) 21 { 22 t*=10; 23 t+=a[i]-'0'; 24 if(t>=mod) 25 t=t%mod; 26 } 27 return t; 28 } 29 int main() 30 { 31 string a; 32 int mod; 33 while(cin>>a>>mod) 34 { 35 cout<<MOD(a,mod)<<endl; 36 } 37 return 0; 38 }