1022 D进制的A+B (20 分)
题意描述:
输入两个非负 10 进制整数 A 和 B (≤2^30 −1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103
解题思路:
根据题意,先求出两个十进制整数的和再转换为K进制即可。注意输入的两个非负数都是零的情况。
代码:
def main():
temp = [int(x) for x in input().split()]
# 存储输入的三个整数
n = temp[0] + temp[1]
# 求 A B 之和
print(to_k(n, temp[2]))
#to_k(n, temp[2]) 返回n 的temp[2]进制对应的字符串
return
def to_k(n, k):
if n == 0:
return '0'
#任意进制的0都还是0本身。
ret = ""
# 对于非零的数字,采用除k取余法得到其k进制的表示。
# 可以参考十进制中拆开一个数字的过程。
while n:
ret += str(n % k)
n = n // k
#ret += str(n)
return ret[::-1]
# 注意最后要翻转得到的字符串
if __name__ == '__main__':
main()
易错点:
- 除K取余法不能处理
n == 0
的情况,需要单独处理。
总结: