B1022 D进制的A+B
输入两个非负10进制整数A和B(<=2^30-1),输出A+B的D (1 < D <= 10)进制数。
输入格式
输入在一行中依次给出3个整数A、B和D。
输出格式
输出A+B的D进制数。
输入样例
123 456 8
输出样例
1103
idea
- p进制—>十进制:按权相加
eg:p进制的x —> 10进制的y
int y, product = 1;
while(x != 0){
y += (x % 10) * product;
product *= p;
}
- 十进制—> p进制:除基取余
eg:十进制的y—> p进制z
int z[35], n = 0;//z数组大小依据数据范围而定
do{//用do{}while();是为了包含y =0的情况
z[n++] = y % p;
y /= p;
}while(y != 0);
solution
#include <stdio.h>
int main(){
int a, b, d, c[35], n = 0;
scanf("%d%d%d", &a, &b, &d);
a += b;
do{
c[n++] = a % d;
a /= d;
}while(a != 0);
for(int i = n - 1; i >= 0; i--)
printf("%d", c[i]);
return 0;
}