对于20位以上的超长整数无法用int、long等基本类型表示,但可以考虑用字符串实现。 本关任务:编写程序,基于字符串实现对超长整数的加法运算和减法运算,输入两个超长整数和运算符(+或-),输出运算结果。 例如:输入123456789012345678901 + 123,输出123456789012345679024。 要求:输入的两个超长整数都是非负整数,并且长度都小于100位。对于减法运算,如果运算结果为负数要在前面加上负号。并且运算结果要去掉前导0,例如运算结果如果是000123,要变成123输出。
时间: 2024-03-14 15:45:03 浏览: 18
好的,这是一个比较基础的大整数加减法问题,我可以为您提供一份 Python 的代码实现。请您将以下代码保存为一个名为 `big_integer.py` 的文件并运行它,然后按照提示输入两个数和运算符即可。
```python
def add(a, b):
ans = ''
carry = 0
i, j = len(a) - 1, len(b) - 1
while i >= 0 or j >= 0 or carry:
x = ord(a[i]) - ord('0') if i >= 0 else 0
y = ord(b[j]) - ord('0') if j >= 0 else 0
s = x + y + carry
ans = str(s % 10) + ans
carry = s // 10
i, j = i - 1, j - 1
return ans
def sub(a, b):
if len(a) < len(b) or (len(a) == len(b) and a < b):
a, b = b, a
sign = '-'
else:
sign = ''
ans = ''
carry = 0
i, j = len(a) - 1, len(b) - 1
while i >= 0 or j >= 0:
x = ord(a[i]) - ord('0') if i >= 0 else 0
y = ord(b[j]) - ord('0') if j >= 0 else 0
s = x - y - carry
if s < 0:
s += 10
carry = 1
else:
carry = 0
ans = str(s) + ans
i, j = i - 1, j - 1
ans = sign + ans if sign else ans
return ans.lstrip('0') or '0'
a = input().strip()
op = input().strip()
b = input().strip()
if op == '+':
print(add(a, b))
else:
print(sub(a, b))
```
希望能够帮到您!
阅读全文
相关推荐
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)