进制转换,模拟
代码:
#include<iostream>
using namespace std;
char ans[10005];
int main(){
ios::sync_with_stdio(false);
int m,n;
string x;
while(cin>>m>>n){
cin>>x;
int cnt=x.length();
long long t=0,xp=1;
//先转为十进制数t,注意t是ll类型,否则会溢出
for(int i=cnt-1;i>=0;--i) {
if(x[i]<='9') t+=(x[i]-'0')*xp;
else t+=(x[i]-'A'+10)*xp;
xp*=m;
}
cnt=0;
int extra;
//再转为n进制数
while(t){
extra=t%n;
if(extra<10) ans[++cnt]=char('0'+extra);
else ans[++cnt]=char('a'+extra-10);
t/=n;
}
for(int i=cnt;i>0;--i) printf("%c",ans[i]);
printf("\n");
}
return 0;
}