对于20位以上的超长整数无法用int、long等基本类型表示,但可以考虑用字符串实现。 本关任务:编写程序,基于字符串实现对超长整数的加法运算和减法运算,输入两个超长整数和运算符(+或-),输出运算结果。 例如:输入123456789012345678901 + 123,输出123456789012345679024。 要求:输入的两个超长整数都是非负整数,并且长度都小于100位。对于减法运算,如果运算结果为负数要在前面加上负号。并且运算结果要去掉前导0,例如运算结果如果是000123,要变成123输出。
时间: 2024-03-17 08:46:47 浏览: 59
C代码实现超长整数字符串 相加,及相应执行程序
好的,我明白了。这是一个超长整数加减法的问题。我可以为您提供一个 Python 的解决方案。
```
def add_or_sub(num1, num2, op):
"""
对两个超长整数进行加减运算
"""
# 将两个字符串转换成列表,并翻转
nums1 = list(num1)[::-1]
nums2 = list(num2)[::-1]
# 确定循环次数
length = max(len(nums1), len(nums2))
# 补全两个列表,使其长度相等
nums1 += ['0'] * (length - len(nums1))
nums2 += ['0'] * (length - len(nums2))
# 进位标志
carry = 0
# 存储结果的列表
result = []
# 循环计算
for i in range(length):
if op == '+':
# 加法运算
temp = int(nums1[i]) + int(nums2[i]) + carry
else:
# 减法运算
temp = int(nums1[i]) - int(nums2[i]) - carry
if temp >= 10:
# 如果结果大于等于10,则需要进位
carry = 1
temp -= 10
elif temp < 0:
# 如果结果小于0,则需要借位
carry = 1
temp += 10
else:
carry = 0
result.append(str(temp))
if carry == 1:
# 如果最后一次运算需要进位,则在结果列表最后添加一个1
result.append('1')
# 将结果列表翻转,并将其转换成字符串
result = ''.join(result[::-1])
# 去掉前导0
while len(result) > 1 and result[0] == '0':
result = result[1:]
# 如果是减法运算,并且结果小于0,则在结果前面添加一个负号
if op == '-' and int(num1) < int(num2):
result = '-' + result
return result
# 测试代码
num1 = input("请输入第一个超长整数:")
num2 = input("请输入第二个超长整数:")
op = input("请输入运算符(+或-):")
result = add_or_sub(num1, num2, op)
print("运算结果为:", result)
```
您可以使用这个函数来进行超长整数的加减法运算。
阅读全文