AcWing 792. 高精度减法(python3实现)
原题链接
简单
作者:
等待_02
,
2024-01-17 11:57:17
,
所有人可见
,
阅读 35
def bigger(num1, num2):
if len(num1) > len(num2):
return True
if len(num1) < len(num2):
return False
for i in range(len(num1)):
if num1[i] > num2[i]:
return True
elif num1[i] < num2[i]:
return False
return True
def sub(num1, num2):
res = []
t = 0
for i in range(len(num1)):
t = num1[i] - t
if i < len(num2): t -= num2[i]
res.append((10 + t) % 10)
if t < 0: t = 1
else: t = 0
# 注意要大于1因为考虑到相等的情况,要输出一个0
while(len(res) > 1 and res[-1] == 0):
res = res[:-1]
res.reverse()
return res
if __name__ == "__main__":
num1 = list(map(int, list(input())))
num2 = list(map(int, list(input())))
sign = ""
if bigger(num1, num2):
big = num1
small = num2
else:
big = num2
small = num1
sign = "-"
num1.reverse()
num2.reverse()
print(sign + "".join(map(str, sub(big, small))))