題意 給出B(10以內大於0)進位制下 p (1000位以內)和m(9位以內) 求 p%m 在b進位制下等於什麼
思路: 可以計算 1e9不會溢位Int所以m在int值以內 先求m 要處理p 每次取一位模剛剛的m即可(b^n 也要不停模)
坑點 : p可能等於0 這時候要輸出0
#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<iostream>
using namespace std; char s1[],s2[];
vector<int>q;
int main(){
int b,p,m;
while(scanf("%d",&b)==&&b){
scanf("%s%s",s1,s2);
int len1=strlen(s1);
int len2=strlen(s2);
long long temp1=,temp2=;
q.clear();
// cout<<s1<<" "<<s2<<endl;
int zz=;
for(int i=len2-;i>=;i--){
temp2+=zz*(s2[i]-'');
zz*=b;
}
zz=; for(int i=len1-;i>=;i--){
temp1+=(zz*(s1[i]-''))%temp2;
// cout<<temp1<<endl;
temp1%=temp2;
zz*=b;
zz%=temp2;
}
//cout<<temp1<<temp2<<endl;
int ans=temp1%temp2;
//cout<<ans<<endl;
if(temp1==){
printf("0\n");
continue;
}
while(ans){
q.push_back(ans%b);
ans/=b;
}
for(int i=q.size()-;i>=;i--){
printf("%d",q[i]);
}
printf("\n"); }
return ;
}