#include <string>
#include <list>
#include <iostream>
#include <functional>
std::list<int> multiply(const std::list<int>& _a, const std::list<int>& _b)
{
std::list<int> ret;
int mod = 100000000, rem = 0;
auto retit = ret.rbegin(), cur = retit;
for (auto it2 = _b.rbegin(); it2 != _b.rend(); ++it2, ++cur)
{
retit = cur;
for (auto it1 = _a.rbegin(); it1 != _a.rend(); ++it1, ++retit)
{
long long a = (long long)(*it2) * (*it1) + rem;
if (retit == ret.rend())
ret.push_front(a%mod);
else
a += *retit, *retit = a%mod;
rem = (int)(a / mod);
}
if (rem)
{
if (retit == ret.rend())
ret.push_front(rem);
else
*retit += rem;
rem = 0;
}
}
return ret;
}
int main()
{
std::list<int> l1 = {346, 77523234};
std::list<int> l2 = {6728, 91258627};
std::list<int> ret = multiply(l1, l2);
for (auto& r : ret)
std::cout << r << ' ';
std::cout << std::endl;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CgpzdGQ6Omxpc3Q8aW50PiBtdWx0aXBseShjb25zdCBzdGQ6Omxpc3Q8aW50PiYgX2EsIGNvbnN0IHN0ZDo6bGlzdDxpbnQ+JiBfYikKewoJc3RkOjpsaXN0PGludD4gcmV0OwoJaW50IG1vZCA9IDEwMDAwMDAwMCwgcmVtID0gMDsKCWF1dG8gcmV0aXQgPSByZXQucmJlZ2luKCksIGN1ciA9IHJldGl0OwoJZm9yIChhdXRvIGl0MiA9IF9iLnJiZWdpbigpOyBpdDIgIT0gX2IucmVuZCgpOyArK2l0MiwgKytjdXIpCgl7CgkJcmV0aXQgPSBjdXI7CgoJCWZvciAoYXV0byBpdDEgPSBfYS5yYmVnaW4oKTsgaXQxICE9IF9hLnJlbmQoKTsgKytpdDEsICsrcmV0aXQpCgkJewoJCQlsb25nIGxvbmcgYSA9IChsb25nIGxvbmcpKCppdDIpICogKCppdDEpICsgcmVtOwoJCQlpZiAocmV0aXQgPT0gcmV0LnJlbmQoKSkKCQkJCXJldC5wdXNoX2Zyb250KGElbW9kKTsKCQkJZWxzZQoJCQkJYSArPSAqcmV0aXQsICpyZXRpdCA9IGElbW9kOwoJCQlyZW0gPSAoaW50KShhIC8gbW9kKTsKCQl9CgkJaWYgKHJlbSkKCQl7CgkJCWlmIChyZXRpdCA9PSByZXQucmVuZCgpKQoJCQkJcmV0LnB1c2hfZnJvbnQocmVtKTsKCQkJZWxzZQoJCQkJKnJldGl0ICs9IHJlbTsKCQkJcmVtID0gMDsKCQl9Cgl9CglyZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpCnsKCXN0ZDo6bGlzdDxpbnQ+IGwxID0gezM0NiwgNzc1MjMyMzR9OwoJc3RkOjpsaXN0PGludD4gbDIgPSB7NjcyOCwgOTEyNTg2Mjd9OwoJc3RkOjpsaXN0PGludD4gcmV0ID0gbXVsdGlwbHkobDEsIGwyKTsKCWZvciAoYXV0byYgciA6IHJldCkKCQlzdGQ6OmNvdXQgPDwgciA8PCAnICc7CglzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwp9Cg==