1. 程式人生 > 實用技巧 >大數(加法, 乘法(多位數與個位數))

大數(加法, 乘法(多位數與個位數))

加法

 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 #include<cstdio>
 5 
 6 using namespace std;
 7 vector<int> A, B;
 8 
 9 vector<int> add(vector<int> &A, vector<int> &B) {
10     int t = 0;
11     vector<int> C;
12     for
(int i = 0; i < A.size() || i < B.size(); i++) { 13 if (i < A.size()) t += A[i]; 14 if (i < B.size()) t += B[i]; 15 C.push_back(t % 10); 16 t /= 10; 17 } 18 if (t) C.push_back(1); 19 return C; 20 } 21 22 int main() { 23 string a, b; 24 cin >> a >> b;
25 for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0'); 26 for (int i = b.size() - 1; i >= 0; i--) B.push_back(b[i] - '0'); 27 auto C = add(A, B); 28 for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]); 29 return 0; 30 }

乘法(多位數與個位數)

 1 #include<iostream>
 2
#include<string> 3 #include<vector> 4 5 using namespace std; 6 7 vector<int> A; 8 9 vector<int> mul(vector<int> &A, int b) { 10 vector<int> C; 11 int t = 0; 12 for (int i = 0; i < A.size() || t; i++) { 13 if(i < A.size()) t += A[i] * b; 14 C.push_back(t % 10); 15 t /= 10; 16 } 17 return C; 18 } 19 20 int main() { 21 string a; 22 int b; 23 cin >> a >> b; 24 for (int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0'); 25 auto C = mul(A, b); 26 for (int i = C.size() - 1; i >= 0; i--) printf("%d", C[i]); 27 return 0; 28 }