Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <string>
- using namespace std;
- typedef vector<int> lnum;
- const int base = 1000*1000*1000;
- int main()
- {
- lnum a,b;
- string s;
- cin>>s;
- for (int i=(int)s.length(); i>0; i-=9)
- if (i < 9)
- a.push_back (atoi (s.substr (0, i).c_str()));
- else
- a.push_back (atoi (s.substr (i-9, 9).c_str()));
- cin>>s;
- for (int i=(int)s.length(); i>0; i-=9)
- if (i < 9)
- b.push_back (atoi (s.substr (0, i).c_str()));
- else
- b.push_back (atoi (s.substr (i-9, 9).c_str()));
- lnum c (a.size()+b.size());
- for (size_t i=0; i<a.size(); ++i)
- for (int j=0, carry=0; j<(int)b.size() || carry; ++j) {
- long long cur = c[i+j] + a[i] * 1ll * (j < (int)b.size() ? b[j] : 0) + carry;
- c[i+j] = int (cur % base);
- carry = int (cur / base);
- }
- while (c.size() > 1 && c.back() == 0)
- c.pop_back();
- printf ("%d", c.empty() ? 0 : c.back());
- for (int i=(int)c.size()-2; i>=0; --i)
- printf ("%09d", c[i]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement