马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
高精度加法
例 1
例如: 1111111111111+9, 列成竖式,- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 9
-
- ---------------------------
-
复制代码 先算个位,
1+9=10,
满10, 向十位进1。- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 9
- 1
- ---------------------------
- 0
复制代码 接下来, 处理进位。
十位: 1+1=2 -> 2- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 9
- 1
- ---------------------------
- 2 0
复制代码 百位: 无进位, 直接照抄. 1 -> 1- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 9
- 1
- ---------------------------
- 1 2 0
复制代码 千位: 1 -> 1
万位: ...
...: ...
最高位: 1 -> 1
最终结果:- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 9
- 1
- ---------------------------
- 1 1 1 1 1 1 1 1 1 1 1 2 0
复制代码 所以, 1111111111111+9=1111111111120
例 2
1111111111111+8888888888889,
这个算式变成了高精度+高精度了。
还是列成竖式,- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
-
- ---------------------------
-
复制代码 先算个位,
1+9=10,
满10, 向十位进1。- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1
- ---------------------------
- 0
复制代码 接下来, 算十位。
1+8+1=10,
满10, 向百位进1。- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1
- ---------------------------
- 0 0
复制代码 千位, 万位...以此类推。- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1 1
- ---------------------------
- 0 0 0
复制代码- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1 1 1
- ---------------------------
- 0 0 0 0
复制代码 ......- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1 1 1 1 1 1 1 1 1 1 1
- ---------------------------
- 0 0 0 0 0 0 0 0 0 0 0 0
复制代码 最高位:
1+8+1=10,
向前一位进1.- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1 1 1 1 1 1 1 1 1 1 1 1
- ---------------------------
- 0 0 0 0 0 0 0 0 0 0 0 0 0
复制代码- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1 1 1 1 1 1 1 1 1 1 1 1
- ---------------------------
- 1 0 0 0 0 0 0 0 0 0 0 0 0 0
复制代码 所以,
1111111111111+8888888888889=10000000000000=1013- 1 1 1 1 1 1 1 1 1 1 1 1 1
- + 8 8 8 8 8 8 8 8 8 8 8 8 9
- 1 1 1 1 1 1 1 1 1 1 1 1 1
- ---------------------------
- 1 0 0 0 0 0 0 0 0 0 0 0 0 0
复制代码 代码
- // 1. Import libraries
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <ctime>
- #include <algorithm>
- #include <cstring>
- #include <cassert>
- #include <vector>
- // Import namespace 'std'
- using namespace std;
复制代码- // 2. Initialize variables
- const int MAX = 1000;
- char s[MAX+1];
- int a[MAX+1], b[MAX+1],c[MAX+2];
复制代码 [code]// 3. Define Main Functionint main(int argc, char **argv) { for (int i=0;i |