题解 | 数制转换
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
string s;
while(cin>>a>>s>>b){
long long c=0;
for(int i=0;i<s.size();i++){
c*=a;
if(isdigit(s[i]))c+=s[i]-'0';
else {
if(s[i]>='a'){
c+=s[i]-'a'+10;
}else c+=s[i]-'A'+10;
}
}
string d="";
while(c!=0){
int x=c%b;
if(x>=10)d.push_back('A'+x-10);
else d.push_back(x+'0');
c/=b;
}
reverse(d.begin(),d.end());
cout<<d<<endl;
}
}
这个解法主要注意一点,a在ASCII表里面在后面,所以可以把判断写的简单一点
查看2道真题和解析