输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
1、解题思路
进制转换问题可采用除基取余法,代码如下:
#include<cstdio>
int main(){
int A,B;
int D;
scanf("%d %d %d",&A,&B,&D);
int C=A+B;
int num[31],j=0;
if(C==0) printf("0");
else{
while(C!=0){
num[j++]=C%D;
C/=D;
}
}
for(int i=j-1;i>=0;i--){
printf("%d",num[i]);
}
return 0;
}
2、总结
1、进制转换使用while循环时,要注意C=0时需要特判输出0,使用do……while循环时不用;
2、由于A加B的范围恰好在int范围内,转化为二进制可以得到最大位数31,因此用来存放D进制的A+B的数组大小至少为31。