PAT-B1022题解

-进制转换

【题目描述】
输入两个非负10进制整数A和B(<=230-1),输出A+B的D (1 < D <= 10)进制数。

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

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

【输入样例】:

123 456 8

【输出样例】:

1103

思路:先计算A+B(此时为十进制),然后把结果转换成D进制,而十进制转换为D进制进行“除基取余法”

AC代码:
```

#include
int main(){
int a,b,d;
scanf(“%d%d%d”,&a,&b,&d);
int sum=a+b;
int ans[31],num=0; //ans存放D进制的每一位
do{ //进制转换
ans[num++]=sum%d;
sum=sum/d;
}while(sum!=0);
for(int i=num-1;i>=0;i–){ //从高位到低位进行输出
printf(“%d”,ans[i]);
}
return 0;
}

Thanks for your reward!