#include <boost/multiprecision/cpp_int.hpp>
#include <iostream>
int main()
{
using namespace boost::multiprecision;
int128_t v = 1;
// Do some fixed precision arithmetic:
for(unsigned i = 1; i <= 20; ++i)
v *= i;
std::cout << v << std::endl; // prints 20!
// Repeat at arbitrary precision:
cpp_int u = 1;
for(unsigned i = 1; i <= 100; ++i)
u *= i;
std::cout << u << std::endl; // prints 100!
return 0;
}
I2luY2x1ZGUgPGJvb3N0L211bHRpcHJlY2lzaW9uL2NwcF9pbnQuaHBwPgojaW5jbHVkZSA8aW9zdHJlYW0+CgppbnQgbWFpbigpCnsKICAgdXNpbmcgbmFtZXNwYWNlIGJvb3N0OjptdWx0aXByZWNpc2lvbjsKCiAgIGludDEyOF90IHYgPSAxOwoKICAgLy8gRG8gc29tZSBmaXhlZCBwcmVjaXNpb24gYXJpdGhtZXRpYzoKICAgZm9yKHVuc2lnbmVkIGkgPSAxOyBpIDw9IDIwOyArK2kpCiAgICAgIHYgKj0gaTsKCiAgIHN0ZDo6Y291dCA8PCB2IDw8IHN0ZDo6ZW5kbDsgLy8gcHJpbnRzIDIwIQoKICAgLy8gUmVwZWF0IGF0IGFyYml0cmFyeSBwcmVjaXNpb246CiAgIGNwcF9pbnQgdSA9IDE7CiAgIGZvcih1bnNpZ25lZCBpID0gMTsgaSA8PSAxMDA7ICsraSkKICAgICAgdSAqPSBpOwoKICAgc3RkOjpjb3V0IDw8IHUgPDwgc3RkOjplbmRsOyAvLyBwcmludHMgMTAwIQoKICAgcmV0dXJuIDA7Cn0=