您的位置:首页 > 理论基础 > 数据结构算法

1022. D进制的A+B (20)

2016-12-21 12:36 302 查看
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,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息