#include <iostream>
#include <math.h>
typedef unsigned long long licznik;
using namespace std;
const licznik T_size = 10000;
void opt (char *wsk, licznik size)
{
--size;
for(long long int q=size; q>=0; --q)
{
if(*(wsk+q)>=10) // takie pro modulo
{
licznik tmp = *(wsk+q)/10;
*(wsk+q-1)+=tmp;
*(wsk+q) = (*(wsk+q)-10*tmp);
}
}
}
void mnozenie (const licznik a, const licznik b) // mnożenie dwoch liczb unsigned long long int
{
bool *wynik = new bool[T_size];
char *wsk = (char *) wynik;
licznik i = T_size-1, j=i;
for(register licznik B=b; B>0; B/=10, --j)
{
for(register licznik A=a, i=j; A>0; A/=10, --i)
*(wsk+i)+= (A%10 * B%10);
opt(wsk, T_size);
}
i = 0; // wypisywanie wyniku
while( *(wsk+ ++i)==0 );
while(i!=T_size)
cout << *(wynik+i++);
cout << endl;
return;
}
int main()
{
licznik a, b;
cin>>a>>b;
cout<<"Poprawny wynik mnożenia: ";
mnozenie(a, b);
long double wynik=(long double)a*(long double)b;
cout<<"Wynik mnożenie zapisany w long double: "<<wynik<<endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgp0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBsaWN6bmlrOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBsaWN6bmlrIFRfc2l6ZSA9IDEwMDAwOwoKdm9pZCBvcHQgKGNoYXIgKndzaywgbGljem5payBzaXplKQp7CiAgLS1zaXplOwogIGZvcihsb25nIGxvbmcgaW50IHE9c2l6ZTsgcT49MDsgLS1xKQogIHsKICAgIGlmKCood3NrK3EpPj0xMCkgLy8gdGFraWUgcHJvIG1vZHVsbwogICAgewogICAgICBsaWN6bmlrIHRtcCA9ICood3NrK3EpLzEwOwogICAgICAqKHdzaytxLTEpKz10bXA7CiAgICAgICood3NrK3EpID0gKCood3NrK3EpLTEwKnRtcCk7CiAgICB9CiAgfQp9Cgp2b2lkIG1ub3plbmllIChjb25zdCBsaWN6bmlrIGEsIGNvbnN0IGxpY3puaWsgYikgLy8gbW5vw4XCvGVuaWUgZHdvY2ggbGljemIgdW5zaWduZWQgbG9uZyBsb25nIGludAp7CgogIGJvb2wgKnd5bmlrID0gbmV3IGJvb2xbVF9zaXplXTsKICBjaGFyICp3c2sgPSAoY2hhciAqKSB3eW5pazsKICBsaWN6bmlrIGkgPSBUX3NpemUtMSwgaj1pOwoKICBmb3IocmVnaXN0ZXIgbGljem5payBCPWI7IEI+MDsgQi89MTAsIC0taikKICB7CiAgICBmb3IocmVnaXN0ZXIgbGljem5payBBPWEsIGk9ajsgQT4wOyBBLz0xMCwgLS1pKQogICAgICAqKHdzaytpKSs9IChBJTEwICogQiUxMCk7CiAgICBvcHQod3NrLCBUX3NpemUpOwoKICB9CgogIGkgPSAwOyAvLyB3eXBpc3l3YW5pZSB3eW5pa3UKICB3aGlsZSggKih3c2srICsraSk9PTAgKTsKICB3aGlsZShpIT1UX3NpemUpCiAgICBjb3V0IDw8ICood3luaWsraSsrKTsKCgogIGNvdXQgPDwgZW5kbDsKICByZXR1cm47Cn0KCgoKCgppbnQgbWFpbigpCnsKICBsaWN6bmlrIGEsIGI7CiAgY2luPj5hPj5iOwogIGNvdXQ8PCJQb3ByYXdueSB3eW5payBtbm/DhcK8ZW5pYTogIjsKICBtbm96ZW5pZShhLCBiKTsKICBsb25nIGRvdWJsZSB3eW5paz0obG9uZyBkb3VibGUpYSoobG9uZyBkb3VibGUpYjsKICBjb3V0PDwiV3luaWsgbW5vw4XCvGVuaWUgemFwaXNhbnkgdyBsb25nIGRvdWJsZTogIjw8d3luaWs8PGVuZGw7CgogIHJldHVybiAwOwp9Cg==