基本思想:
由于数的范围过大,计算他们桟会爆掉,我们将数字的每一位存放在数组里,然后对每一位进行加减乘除运算,按照运算法则注意进位即可,思路比较简单,注意一下细节即可。
给定两个正整数(不含前导 0),计算它们的和。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的和。
数据范围
1≤整数长度≤100000
输入样例:
12
23
输出样例:
35
#include<iostream> #include<vector> using namespace std; vector<int> add(vector<int> &A, vector<int> &B) { if(A.size() < B.size()) return add(B, A); vector<int> C; int t = 0; for(int i = 0; i < A.size(); i++) { t += A[i]; if(i < B.size()) t += B[i]; C.push_back(t % 10); t /= 10; } if(t) C.push_back(t);//最高位可能有进位 return C; } int main() { vector<int> A, B; string a, b; cin >> a >> b; for(int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0'); for(int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0'); auto C = add(A,B); for(int i = C.size() - 1; i >= 0; i--) cout << C[i]; return 0; }
例题:
793. 高精度乘法 - AcWing题库 //注意去除前导零