P1601 A+B Problem(高精)
阿新 • • 發佈:2021-11-21
#include <bits/stdc++.h> using namespace std; /** * 功能:高精度加法模板 * @param A * @param B * @return */ vector<int> add(vector<int> &A, vector<int> &B) { //宣告結果陣列C vector<int> C; //以長的為根基,進行計算 if (A.size() < B.size()) return add(B, A); //進位 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() { //以字串形式讀入 string a, b; cin >> a >> b; //1、準備動作,將字串的每一位,反序放入到整數運算陣列中 vector<int> A, B, C; 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'); //2、呼叫模板進行計算 C = add(A, B); //3、輸出結果,需要倒序噢 for (int i = C.size() - 1; i >= 0; i--)printf("%d", C[i]); return 0; }