题解 | 数制转换
#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表里面在后面,所以可以把判断写的简单一点