任意长整数加减
时间: 2023-07-26 22:03:25 浏览: 89
任意长整数加减法
任意长整数加减可以使用字符串模拟的方式实现。具体步骤如下:
1. 将两个长整数转换成字符串,位数对齐,位数不足的在前面补0。
2. 从字符串的末尾开始,按位进行加减操作。对于加法,将对应位上的数字相加,并加上进位数;对于减法,将对应位上的数字相减,并减去借位数。注意,需要将前一位的进位或借位加上。
3. 将每一位的结果保存到一个新的字符串中,注意要将数字转换为字符。
4. 最后得到的字符串就是两个长整数的和或差。
下面是一个简单的 Python 代码实现:
```python
def add(a, b):
# 字符串对齐,位数不足的在前面补0
a = a.zfill(len(b))
b = b.zfill(len(a))
# 进位数
carry = 0
# 结果字符串
res = ''
# 从字符串末尾开始,按位进行加法运算
for i in range(len(a)-1, -1, -1):
s = int(a[i]) + int(b[i]) + carry
carry = s // 10
res = str(s % 10) + res
# 最高位有进位,需要在最前面加上1
if carry > 0:
res = '1' + res
return res
def sub(a, b):
# 字符串对齐,位数不足的在前面补0
a = a.zfill(len(b))
b = b.zfill(len(a))
# 借位数
borrow = 0
# 结果字符串
res = ''
# 从字符串末尾开始,按位进行减法运算
for i in range(len(a)-1, -1, -1):
s = int(a[i]) - int(b[i]) - borrow
if s < 0:
s += 10
borrow = 1
else:
borrow = 0
res = str(s) + res
# 去掉前导0
res = res.lstrip('0')
# 如果结果为0,返回'0'
if res == '':
res = '0'
return res
```
使用示例:
```python
a = '123456789012345678901234567890'
b = '987654321098765432109876543210'
print(add(a, b)) # 1111111111111111111111111111100
print(sub(a, b)) # -864197532086419753208641975320
```
阅读全文