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进制,需要两步:
>①将P进制数x转换为十进制y
>②将十进制数y转换为Q进制数z
> ③对于第二步的取余操作,使用do……while()的循环,包含了除数为0的情况!
或者使用while考虑=0;
参考1.
#include <iostream>
using namespace std;
int main() {
int A, B, D;
int sum = 0,
num = 0,
ans[31] = { 0 }; //注意数组的大小
cin >> A;
cin >> B;
cin >> D;
sum = A + B;
do {
ans[num] = sum % D;
sum /= D;
num++;
} while (sum != 0);
for (int i = num - 1; i >= 0; i--) { //倒序输出
cout << ans[i];
}
//system("pause");
return 0;
}
参考2.
a, b, D = input().split()
ans = []
a = int(a); b = int(b); D = int(D)
SUM = a + b
if SUM == 0:
print(0)
while SUM != 0:
ans.append(SUM % D)
SUM //= D
for i in range(len(ans)):
print(ans.pop(), end='') # 注意print输出默认换行; # 对于2.x,转成str, s += str(ans.pop()) print s
注意:print()函数输出不换行的方法;
3.x: print(xx, end=''); 默认 end='\n'
2.x: print xx,