思路,从十进制中间桥梁入手即可
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int countx(char a){
if(a >= '0' && a<= '9')
return a - '0';
else if(a >= 'a'&&a <= 'z'){
return a - 'a' + 10;
}
else
return a - 'A' + 10;
}
int main(){
int a, b;
char str[40];
while(scanf("%d %s %d",&a,&str,&b)!=EOF){
//向十进制转换
int c = 1;
long x = 0;
int i = strlen(str) - 1;
while(i >= 0){
x += countx(str[i])*c;
c *= a;
i--;
}
//向目标进制转换
char ans[40];
int index = 0;
while(x > 0){
ans[index++] = x % b;
x /= b;
}
//输出
for(int k = index - 1;k >= 0 ;k--){
printf("%d",ans[k]);
}
cout<<endl;
}
}