Advertisement
AlaminSakib

Any length number multiplier [Selise]

Dec 17th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. string the_multiplier(string num1, string num2)
  6. {
  7.     string result[num2.size()], final_result = "";
  8.     //the multiplication
  9.     for(int i = 0; i < num2.size(); i++)
  10.     {
  11.         int carry = 0;
  12.         for(int j = 0; j < num1.size(); j++)
  13.         {
  14.             int mul = (num2[i] - '0') * (num1[j] - '0');
  15.             mul += carry;
  16.             carry = mul / 10;
  17.             mul = mul % 10;
  18.             result[i] += mul + '0';
  19.         }
  20.         if(carry) result[i] += carry + '0';
  21.         reverse(result[i].begin(), result[i].end());
  22.         result[i].insert(0, num2.size() - 1 - i, '0');
  23.         for(int k = 0; k < i; k++)
  24.         {
  25.             result[i] += "0";
  26.         }
  27.     }
  28.     int carry = 0, siz = result[0].size() - 1;
  29.     for(int i = siz, sum = 0; i >= 0; i--)
  30.     {
  31.         sum = 0;
  32.         for(int j = 0; j < num2.size(); j++)
  33.         {
  34.             sum += result[j][i] - '0';
  35.         }
  36.         sum += carry;
  37.         carry = sum / 10;
  38.         sum = sum % 10;
  39.         final_result += sum + '0';
  40.     }
  41.     if(carry) final_result += carry + '0';
  42.     reverse(final_result.begin(), final_result.end());
  43.     return final_result;
  44. }
  45.  
  46. int main()
  47. {
  48.     string num1 = "34523423", num2 = "777";
  49.     if(num1.size() <= num2.size()) swap (num1, num2);
  50.     reverse(num1.begin(), num1.end());
  51.     reverse(num2.begin(), num2.end());
  52.     cout << the_multiplier(num1, num2);
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement