这里要利用到公式:(a+b) mod (n) = (a mod n) + (b mod n) mod (n); 把大整数写成自左向右的形式:1234 = ((1*10+2)*10+3)*10+4,然后利用前面这个公式,每步取模,算法如下: // source code of submission 784582, Zhongshan University Online Judge System #include <iostream> #include <cstring> using namespace std; int mod(char str[],int basis) //这里运用公式(a+b)%n = ((a%n)+(b%n))%n; { int size=strlen(str),temp=0,last=0; while (last<size) { temp=temp*10+str[last++]-'0'; if(temp>=basis) temp=temp % basis; } return temp; } int main() { int test,n,i,k,temp; int bas[106],res[106]; char oper[600]; //oper保存大数 cin>>test; while(test--) { cin>>n; for(i = 0;i < n;i++) cin>>bas[i]; cin>>oper; int len = strlen(oper); for(k = 0;k < n;k++) res[k] = mod(oper,bas[k]); cout<<"("<<res[0]; for(i = 1;i < n;i++) cout<<","<<res[i]; cout<<")"<<endl; } return 0; }