进制转换
$O(log_an)$
解题步骤
- 先将输入的a进制数转换为10进制数
- 再将这个十进制数拆位变成b进制数
这样问题就迎刃而解
AC code
#include<iostream>
using namespace std;
int main()
{
int a,b; string s; cin>>a>>s>>b;
int t=0; //将a进制数s变成10进制数t
for(int i=0;i<s.size();i++)
{
if(a<=10||isdigit(s[i])) t=t*a+s[i]-'0';
else if(s[i]>='a'&&s[i]<='z') t=t*a+s[i]-'a'+10;
else if(s[i]>='A'&&s[i]<='Z') t=t*a+s[i]-'A'+10;
}
string res;
while(t) //将十进制数变为b进制数
{
int u=t%b;
res=char(u<10?'0'+u:'A'+(u-10))+res;
t/=b;
}
cout<<res;
return 0;
}