#include
using namespace std;
int main(){
int P,Q;
scanf("%d%d",&P,&Q);
int x;
scanf("%d",&x);
int t=0,f=1;
while(x!=0){
t=(x%10)*f+t;
f=f*P;
x=x/10;
}
int y[100],num=0;
do{
y[num++]=t%Q;
t=t/Q;
} while(t!=0);
for(int i=num-1;i>=0;i--){
if(y[i]>=10)
{
cout<<(char)(87+y[i]);
}
else
printf("%d",y[i]);
}
return 0;
}
你代码的第6/7行明显会出事,x应该用字符串而不是int来储存,或把输入改一下,否则输入16进制数D3D没法正常读取。
upd: 这么久还不结题,题主解决问题了嘛,可以上洛谷参考一下别人的题解:https://www.luogu.com.cn/problem/solution/P1143