Advertisement
Anwar_Rizk

Untitled

Mar 26th, 2022
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. string BigAdd(string s, string t){
  2.     string res;
  3.     int sz = max(s.size(), t.size());
  4.     reverse(s.begin(), s.end());
  5.     reverse(t.begin(), t.end());
  6.     char carry = '0';
  7.     int e = 0, f = 0;
  8.     for(int i = 0; i < sz || carry != '0'; i++){
  9.        e = (i >= s.size() ? 0 : s[i] - '0');
  10.        f = (i >= t.size() ? 0 : t[i] - '0');
  11.        int tmp = (carry - '0') + e + f;
  12.        carry = (tmp/10) + '0';
  13.        res.push_back(tmp%10 + '0');
  14.     }
  15.     reverse(res.begin(), res.end());
  16.     while(res[0] == '0') res.erase(res.begin());
  17.     return res;
  18. }
  19.  
  20. string BigMulti(string s, string t){
  21.     string res;
  22.     reverse(s.begin(), s.end());
  23.     reverse(t.begin(), t.end());
  24.     for(int i = 0; i < t.size(); i++){
  25.        string tmp = string(i, '0');
  26.        char carry = '0';
  27.        for(int j = 0; j < s.size(); j++){
  28.            int m = (t[i]-'0') * (s[j]-'0') + (carry - '0');
  29.            carry = (m/10) + '0';
  30.            tmp.push_back(m%10 + '0');
  31.        }
  32.        tmp.push_back(carry);
  33.        reverse(tmp.begin(), tmp.end());
  34.        res = BigAdd(res, tmp);
  35.     }
  36.     while(res[0] == '0') res.erase(res.begin());
  37.     return res;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement