Advertisement
tim_ryspekov

Code

Jul 21st, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string>
  5.  
  6. using namespace std;
  7. typedef vector<int> lnum;
  8. const int base = 1000*1000*1000;
  9.  
  10. int main()
  11. {
  12.    lnum a,b;
  13.     string s;
  14.     cin>>s;
  15. for (int i=(int)s.length(); i>0; i-=9)
  16.     if (i < 9)
  17.         a.push_back (atoi (s.substr (0, i).c_str()));
  18.     else
  19.         a.push_back (atoi (s.substr (i-9, 9).c_str()));
  20.  
  21.     cin>>s;
  22.         for (int i=(int)s.length(); i>0; i-=9)
  23.     if (i < 9)
  24.         b.push_back (atoi (s.substr (0, i).c_str()));
  25.     else
  26.         b.push_back (atoi (s.substr (i-9, 9).c_str()));
  27.  
  28. lnum c (a.size()+b.size());
  29. for (size_t i=0; i<a.size(); ++i)
  30.     for (int j=0, carry=0; j<(int)b.size() || carry; ++j) {
  31.         long long cur = c[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry;
  32.         c[i+j] = int (cur % base);
  33.         carry = int (cur / base);
  34.     }
  35. while (c.size() > 1 && c.back() == 0)
  36.     c.pop_back();
  37.  
  38. printf ("%d", c.empty() ? 0 : c.back());
  39. for (int i=(int)c.size()-2; i>=0; --i)
  40.     printf ("%09d", c[i]);
  41.     return 0;
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement