1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include <bits/stdc++.h> using namespace std; string bigAdd(string a,string b){ int cr[4001]; string res = ""; while(a.size()>b.size()) b = '0' + b; while(b.size()>a.size()) a = '0' + a; for(int i = 0;i<4001;i++) cr[i] = 0; for(int i = a.size()-1;i>=0;i--){ cr[i] += (a[i]-'0')+(b[i]-'0'); if(i > 0){ cr[i-1] += cr[i]/10; cr[i] = cr[i]%10; } } int f = 0; for(int i = 0;i<a.size();i++){ if(f == 0 && cr[i] != 0)f = 1; if(f == 1){ if(i == 0 && cr[i] >= 10){ res += cr[i] / 10 + '0'; cr[i] = cr[i] % 10; } res += cr[i] + '0'; } } if(f == 0)return "0"; return res; } string smallMulti(string a,int b){ int cr[4001]; string res = ""; for(int i = 0;i<4001;i++) cr[i] = 0; for(int i = a.size()-1;i>=0;i--){ cr[i] += (a[i]-'0')*b; if(i > 0){ cr[i-1] += cr[i]/10; cr[i] = cr[i]%10; } } int f = 0; for(int i = 0;i<a.size();i++){ if(f == 0 && cr[i] != 0)f = 1; if(f == 1){ if(i == 0 && cr[i] >= 10){ res += cr[i] / 10 + '0'; cr[i] = cr[i] % 10; } res += cr[i] + '0'; } } if(f == 0)return "0"; return res; } int main(){ string a,b,res = "0"; cin >> a >> b; for(int i = 0;i<b.size();i++){ string c = smallMulti(a,b[i]-'0'); for(int j = 0;j<b.size()-1-i;j++) c += '0'; res = bigAdd(res,c); } cout << res; return 0; }
|