1022 D进制的A+B (20分)
输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
进制转换方法:(如对于一个P进制数转换成Q进制数)
1、将P进制数转换成十进制数,如a1a2a3a4(P进制数)=a1*P^3+a2*P^2+a3*P^+a4(十进制数)
使用循环实现:
int y=0,product=1;//px在循环中不断*p,得到1、p、p^2、P^3、P^4
while(x!=0){ //p进制数x转为十进制数y
y=y+(x%10)*product;//x%10 取得x的个位数
x=x/10; //去掉x的个位
product=product*P;
}
2、将十进制数转换为Q进制数,除基取余
代码:
#include<cstdio>
int main(){
int a,b,d;//int整型取值范围:-2^31~2^31-1
scanf("%d%d%d",&a,&b,&d);
int sum=a+b;
int D[40],num=0;//数组D存放十进制数a+b转换为d进制的每一位,num为位数
do{
D[num++]=sum%d;//除基取余
sum=sum/d;
}while(sum);//sum 商为0结束
for(int i=num-1;i>=0;i--){
printf("%d",D[i]);
}
return 0;
}