#include<stdio.h>
int main(){
int a,b,i,r;//r为权重
char n[100];
long int x;
int m[100];
while(scanf("%d %s %d",&a,&n,&b)!=EOF){
for(i=0;n[i]!=0;i++){
}
x=0;
r=1;
for(i--;i>=0;i--){
if(n[i]>='A'&&n[i]<='F'){
x+=(n[i]-'A'+10)*r;
}
else if(n[i]>='a'&&n[i]<='f'){
x+=(n[i]-'a'+10)*r;
}
else{
x+=(n[i]-'0')*r;
}
r=r*a;
}//x为十进制数
if(x==0){
printf("0");
}
else{
for(i=0;x>0;i++){
m[i]=x%b;
x=x/b;
}
for(i--;i>=0;i--){
if(m[i]>=10){
printf("%c",m[i]-10+'A');
}
else{
printf("%d",m[i]);
}
}
}
printf("\n");
}
return 0;
int main(){
int a,b,i,r;//r为权重
char n[100];
long int x;
int m[100];
while(scanf("%d %s %d",&a,&n,&b)!=EOF){
for(i=0;n[i]!=0;i++){
}
x=0;
r=1;
for(i--;i>=0;i--){
if(n[i]>='A'&&n[i]<='F'){
x+=(n[i]-'A'+10)*r;
}
else if(n[i]>='a'&&n[i]<='f'){
x+=(n[i]-'a'+10)*r;
}
else{
x+=(n[i]-'0')*r;
}
r=r*a;
}//x为十进制数
if(x==0){
printf("0");
}
else{
for(i=0;x>0;i++){
m[i]=x%b;
x=x/b;
}
for(i--;i>=0;i--){
if(m[i]>=10){
printf("%c",m[i]-10+'A');
}
else{
printf("%d",m[i]);
}
}
}
printf("\n");
}
return 0;
}
这个题目也做了很久 看来还是非常不熟练
本题目错了很多次 比如 该用a时用了b
但最关键的是又忘记了 考虑边界值 比如 n=0的情况!!!!!