大数求模。参照除法笔算的方式。
蛮简单的,对于被除数p和除数m,按照除法的计算方法,从左到右每次读入一位,mod m,得到的余数继续读入后面的位。
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int b;
string p,m;
void process(){
int divisor = 0;
for(int i=0;i<m.length();++i)
divisor = divisor*b + m[i]-'0';
int res = 0;
for(int i=0;i<p.length();++i)
res = (res*b + p[i]-'0')%divisor;
if(res==0){
cout<<"0"<<endl;
return;
}
string output;
while(res){
output.push_back('0'+res%b);
res /= b;
}
cout<<string(output.rbegin(),output.rend())<<endl;
}
int main(){
while(true){
cin>>b;
if(b == 0)
break;
cin>>p>>m;
process();
}
//system("pause");
return 0;
}