#include <iostream>
#include <limits>
unsigned long long factorial(int x)
{
if(x < 2)
return 1;
return x * factorial(x - 1);
}
int main() // overflow
{
int x = 25;
unsigned long long f = factorial(x);
std::cout << x << "! = " << f << std::endl;
std::cout << "Max value for ull: " << std::numeric_limits<unsigned long long>::max();
for(int i = 25 ; i > 0 ; --i) {
f /= i;
std::cout << f << '\n';
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgoKdW5zaWduZWQgbG9uZyBsb25nIGZhY3RvcmlhbChpbnQgeCkKewoJaWYoeCA8IDIpCgkJcmV0dXJuIDE7CgoJcmV0dXJuIHggKiBmYWN0b3JpYWwoeCAtIDEpOwp9CgppbnQgbWFpbigpIC8vIG92ZXJmbG93CnsKCWludCB4ID0gMjU7Cgl1bnNpZ25lZCBsb25nIGxvbmcgZiA9IGZhY3RvcmlhbCh4KTsKCXN0ZDo6Y291dCA8PCB4IDw8ICIhID0gIiA8PCAgZiA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIk1heCB2YWx1ZSBmb3IgdWxsOiAiIDw8IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZyBsb25nPjo6bWF4KCk7Cglmb3IoaW50IGkgPSAyNSA7IGkgPiAwIDsgLS1pKSB7CgkJZiAvPSBpOwoJCXN0ZDo6Y291dCA8PCBmIDw8ICdcbic7Cgl9CgoJcmV0dXJuIDA7Cn0K