Advertisement
InasAwad

BigInt

Apr 17th, 2021
885
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. string Add(int toAdd)
  2.     {
  3.         string result = "";
  4.         int reminder = 0;
  5.         for (int i = number.size() - 1; i >= 0; i--)
  6.         {
  7.             char num = number[i];
  8.             int n = num - '0';
  9.             int second = toAdd % 10;
  10.             toAdd /= 10;
  11.             n += second + reminder;
  12.             reminder = 0;
  13.             if (n >= 10)
  14.             {
  15.                 reminder = 1;
  16.                 n -= 10;
  17.             }
  18.             result.insert(result.begin(), (char)n + '0');
  19.         }
  20.         if (reminder)
  21.         {
  22.             result.insert(result.begin(), (char)reminder + '0');
  23.         }
  24.         return result;
  25.     }
  26.  
  27.  
  28.     string Subtract(int toSub)
  29.     {
  30.         string result = "";
  31.         int outcome, carry = 0;
  32.         for (int i = number.size() - 1; i >= 0; i--)
  33.         {
  34.             char num = number[i];
  35.             int n = num - '0';
  36.             int second = toSub % 10;
  37.             toSub /= 10;
  38.             outcome = (n - second) - carry;
  39.             if (outcome < 0)
  40.             {  
  41.                 outcome += 10;
  42.                 carry = 1;
  43.                 result.insert(result.begin(), (char)outcome + '0');
  44.            
  45.             }
  46.             else
  47.             {
  48.                 carry = 0;
  49.                 result.insert(result.begin(), (char)outcome + '0');
  50.             }
  51.         }
  52.         return result;
  53.     }
  54.  
  55.     string Mulitply(int toMultiply)
  56.     {
  57.         string toMulti = to_string(toMultiply);
  58.         int n = number.size();
  59.         int m = toMulti.size();
  60.         string res(m + n, '0');
  61.  
  62.         for (int i = n - 1; i >= 0; i--) {
  63.             for (int j = m - 1; j >= 0; j--) {
  64.                 int p = (number[i] - '0') * (toMulti[j] - '0') + (res[i + j + 1] - '0');
  65.                 res[i + j + 1] = p % 10 + '0';
  66.                 res[i + j] += p / 10;
  67.             }
  68.         }
  69.         return res;
  70.     }
  71.  
  72.     string Division(int divisor) {
  73.             string ans;
  74.             int idx = 0;
  75.             int temp = number[idx] - '0';
  76.             while (temp < divisor)
  77.                 temp = temp * 10 + (number[++idx] - '0');
  78.  
  79.             while (number.size() > idx) {
  80.                 ans += (temp / divisor) + '0';
  81.  
  82.                 temp = (temp % divisor) * 10 + number[++idx] - '0';
  83.             }
  84.  
  85.             if (ans.length() == 0)
  86.                 return "0";
  87.             return ans;
  88.         }
  89.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement