请帮帮我!《进制转换》

img


我提交上去是错的

#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