输入两个非负 10 进制整数 A 和 B (≤230−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
//大致讲一下进制转换:k进制就是满k进一,我们通常看到的数是十进制,所以是满10进1。那么如何把十进制转换成k进制呢,下面以2进制为例,其他进制的话思路是一样的,模仿即可。
十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
如果要将十进制转换成k进制,只需把除数2换成k即可
下面是我AC的代码:
#include<stdio.h>
int v[100]; //数组储存每次除法运算的余数
int main() {
int x, y, k, m, i;
scanf("%d %d %d", &x, &y, &k); //转为k进制
m = x + y; //先算出x + y 的十进制结果, 操作此数
i = 0; //i为最新一次获得的余数下标+1
do{ //注意:要用do-while,否则的话m == 0时会出错(先特判也可)
v[i++] = m % k; //得到最后一位
m /= k; //擦除最后一位
}while (m);
while (i--) //逆序输出数组的每一位
printf("%d", v[i]);
return 0;
}