题目描述:输入两个非负10进制整数A和B(<=2的30次方-1),输出A+B的D (1 < D <= 10)进制数。

输入格式:输入在一行中依次给出3个整数A、B和D。

输出格式:输出A+B的D进制数。


十进制转二进制的除基取余法:
11除2,商5,余1;
5除2,商2,余1;
2除2,商1,余0;
1除2,商0,余1。
所以11转换2进制为1101。

#include <cstdio>
int main(){
    int a, b, d;
    scanf("%d%d%d",&a,&b,&d);
    int sum=a+b;

    //因此得到a+b的十进制形式。

    int ans[31], num=0;

    ans存放D进制的每一位。

    do{
        ans[num++]=sum%d;
        sum/=d;
    }while(sum!=0);

    //进制转换。

    for(int i=num-1;i>=0;i--){
        printf("%d",ans[i]);
    }

    //由高到低进行输出。

    return 0;
}

标签: none

添加新评论