大数取余(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  }

 

posted @ 2012-08-22 14:33  疼痛落在指尖  阅读(1209)  评论(0编辑  收藏  举报