C:PAT B1022 D进制的A+B;
题目描述:输入两个非负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;
}