#include<iostream> #include<string> using namespace std; string add(string a, string b){ string result = ""; //them 0 vao dau de do dai 2 so bang nhau while(a.length() > b.length()) b = '0'+b; while(a.length() < b.length()) a = '0' + a; //cong tu phai sang trai, dung bien nho la carry int carry = 0; for(int i = a.length() - 1; i >=0; i--){ int kq = a[i] - 48 + b[i] - 48 + carry; carry = kq / 10; result = (char) (kq % 10 + 48) + result; } return result; } string sub(string a, string b){ string result = ""; //them 0 vao dau de do dai 2 so bang nhau while(a.length() > b.length()) b = '0'+b; while(a.length() < b.length()) a = '0' + a; //truong hop a < b ket qua co dau am bool sig = false; if(a < b){ sig = true; swap(a, b); } //tru tu phai sang trai, dung bien muon la borrow int borrow = 0; for(int i = a.length() - 1; i >=0; i--){ int kq = a[i] - (b[i] + borrow); if(kq < 0){ borrow = 1; kq = kq + 10; } else{ borrow = 0; } result = (char) (kq + 48) + result; } while(result.length() > 0 && result[0] == '0') result.erase(0, 1); if(sig) result = '-' + result; return result; } string mul(string a, string b){ string result = "0"; for(int i = a.length() - 1; i >= 0; i--){ int carry = 0; int a1 = a[i] - 48; int kq = 0; string tmp = ""; for(int j = b.length() - 1; j >= 0; j--){ int b1 = b[j] - 48; kq = a1 * b1 + carry; carry = kq / 10; tmp = (char)(kq % 10 + 48) + tmp; } if(carry > 0){ tmp = (char)(carry % 10 + 48) + tmp; } int x = a.length() - i - 1; while(x > 0){ tmp = tmp + "0"; x--; } result = add(result, tmp); } while(result.length() > 0 && result[0] == '0'){ result.erase(0, 1); } return result; } int main(){ string a, b; cin>>a>>b; cout<<add(a, b)<<endl; cout<<sub(a, b)<<endl; cout<<mul(a, b); return 0; }
Tóm Tắt
Share this:
Like this:
Like
Loading…