#include <iostream>
using namespace std;
string multiply (string s1, string s2)
{
char str[10];
string ans="";
int m=s1.length();
int n=s2.length();
if (!s1.compare("0") || !s2.compare("0"))
return "0";
int *res = new int[m + n];
for (int i = m - 1; i >= 0; i--)
{
for (int j = n - 1; j >= 0; j--)
{
res[m + n - i - j - 2] += (s1[i] - '0') * (s2[j] - '0');
res[m + n - i - j - 1] += res[m + n - i - j - 2] / 10;
res[m + n - i - j - 2] %= 10;
}
}
for (int i = m + n - 1; i >= 0; i--)
{
if (res[i] != 0)
{
for (int j = i; j >= 0; j--)
{
sprintf(str,"%d", res[j]);
ans+=str;
}
return ans;
}
}
}
int main() {
cout << multiply("0", "0"); // Doesn't work - prints nothing.
cout.put(cout.widen('\n'));
cout.flush();
// cout << multiply("0", "0") << endl; //works!! This prints "0" correctly
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHN0cmluZyBtdWx0aXBseSAoc3RyaW5nIHMxLCBzdHJpbmcgczIpCiB7CiAgICBjaGFyIHN0clsxMF07CiAgICBzdHJpbmcgYW5zPSIiOwogICAgaW50IG09czEubGVuZ3RoKCk7CiAgICBpbnQgbj1zMi5sZW5ndGgoKTsKCiAgICBpZiAoIXMxLmNvbXBhcmUoIjAiKSB8fCAhczIuY29tcGFyZSgiMCIpKQogICAgICAgICByZXR1cm4gIjAiOwoKICAgICAgIGludCAqcmVzID0gbmV3IGludFttICsgbl07CgogICAgICAgZm9yIChpbnQgaSA9IG0gLSAxOyBpID49IDA7IGktLSkKICAgICAgIHsKICAgICAgICAgZm9yIChpbnQgaiA9IG4gLSAxOyBqID49IDA7IGotLSkKICAgICAgICAgewogICAgICAgICAgcmVzW20gKyBuIC0gaSAtIGogLSAyXSArPSAoczFbaV0gLSAnMCcpICogKHMyW2pdIC0gJzAnKTsKICAgICAgICAgIHJlc1ttICsgbiAtIGkgLSBqIC0gMV0gKz0gcmVzW20gKyBuIC0gaSAtIGogLSAyXSAvIDEwOwogICAgICAgICAgcmVzW20gKyBuIC0gaSAtIGogLSAyXSAlPSAxMDsKICAgICAgICAgfQogICAgICAgfQoKCiAgICAgICBmb3IgKGludCBpID0gbSArIG4gLSAxOyBpID49IDA7IGktLSkKICAgICAgIHsKICAgICAgICAgICAgaWYgKHJlc1tpXSAhPSAwKSAKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPj0gMDsgai0tKSAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgc3ByaW50ZihzdHIsIiVkIiwgcmVzW2pdKTsKICAgICAgICAgICAgICAgICAgYW5zKz1zdHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gYW5zOwogICAgICAgICAgICB9CgogICAgICAgIH0KIH0KCmludCBtYWluKCkgewoKIGNvdXQgPDwgbXVsdGlwbHkoIjAiLCAiMCIpOyAvLyBEb2Vzbid0IHdvcmsgLSBwcmludHMgbm90aGluZy4KIGNvdXQucHV0KGNvdXQud2lkZW4oJ1xuJykpOwogY291dC5mbHVzaCgpOwogLy8gY291dCA8PCBtdWx0aXBseSgiMCIsICIwIikgPDwgZW5kbDsgLy93b3JrcyEhIFRoaXMgcHJpbnRzICIwIiBjb3JyZWN0bHkKCiByZXR1cm4gMDsKfQ==