题目:要求键盘输入两个七进制【0-6】数,以空格分开,计算两者之和输出,例如:
输入:16 1
输出:20
思路:这个题目跟十进制加法一样,不同的就是十进制是逢十进一,七进制是逢七进一。从个位开始加,判断跟7的关系,如果大于七就向前进一,当前位写成个位和与7之差,依次按位加即可。
代码如下:
if __name__ == '__main__':
m, n = map(str, input().strip().split(" "))
m_list, n_list = list(m), list(n) # 存成字符数组,方便按位加
m_list.reverse() # 翻转,方便从个位开始加
n_list.reverse()
# 加数和被加数补齐,防止数组越界,短者高位补0
if len(m_list) > len(n_list):
result = [''] * (len(m_list) + 1) # 保存和,多一位是防止最高位也有进一的情况
n_list = n_list + [0] * (len(m_list) - len(n_list))
else:
result = [''] * (len(n_lis t) + 1)
m_list = m_list + [0] * (len(n_list) - len(m_list))
flag = False
for i in range(max(len(m_list), len(n_list))):
if flag: # 如果上一位有进1,本位和需要加上上一位进的1
plus = int(n_list[i]) + int(m_list[i]) + 1
else:
plus = int(n_list[i]) + int(m_list[i])
if plus >= 7: # 本位大于7,本位存本位和-7,并向前进一
result[i] = str(plus - 7)
flag = True
else:
result[i] = str(plus)
flag = False
if flag: # 最高位最终向前进1,和也需要向前进1
result[-1] = str(1)
result.reverse()
print(''.join(result).strip())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)