#include <iostream>
template < typename Int >
Int silnia( Int input )
{
Int ret = 1;
for ( Int it = 2; it <= input; ++it )
ret *= it;
return ret;
}
int main( )
{
std::cout << "int: " << std::endl;
for ( int it = 1; it < 30; ++it )
std::cout << it << ": " << silnia(it) << std::endl;
std::cout << "unsigned: " << std::endl;
for ( int it = 1; it < 30; ++it )
std::cout << it << ": " << silnia<unsigned>(it) << std::endl;
std::cout << "long long: " << std::endl;
for ( int it = 1; it < 30; ++it )
std::cout << it << ": " << silnia<long long>(it) << std::endl;
std::cout << " unsigned long long: " << std::endl;
for ( int it = 1; it < 30; ++it )
std::cout << it << ": " << silnia<unsigned long long>(it) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGUgPCB0eXBlbmFtZSBJbnQgPgogSW50IHNpbG5pYSggSW50IGlucHV0ICkKIHsKICBJbnQgcmV0ID0gMTsKICBmb3IgKCBJbnQgaXQgPSAyOyBpdCA8PSBpbnB1dDsgKytpdCApCiAgIHJldCAqPSBpdDsKICByZXR1cm4gcmV0OwogfQoKaW50IG1haW4oICkKewogc3RkOjpjb3V0IDw8ICJpbnQ6ICIgPDwgc3RkOjplbmRsOwogZm9yICggaW50IGl0ID0gMTsgaXQgPCAzMDsgKytpdCApIAogIHN0ZDo6Y291dCA8PCBpdCA8PCAiOiAiIDw8IHNpbG5pYShpdCkgPDwgc3RkOjplbmRsOwogIAogc3RkOjpjb3V0IDw8ICJ1bnNpZ25lZDogIiA8PCBzdGQ6OmVuZGw7CiBmb3IgKCBpbnQgaXQgPSAxOyBpdCA8IDMwOyArK2l0ICkgCiAgc3RkOjpjb3V0IDw8IGl0IDw8ICI6ICIgPDwgc2lsbmlhPHVuc2lnbmVkPihpdCkgPDwgc3RkOjplbmRsOwogIAogc3RkOjpjb3V0IDw8ICJsb25nIGxvbmc6ICIgPDwgc3RkOjplbmRsOwogZm9yICggaW50IGl0ID0gMTsgaXQgPCAzMDsgKytpdCApIAogIHN0ZDo6Y291dCA8PCBpdCA8PCAiOiAiIDw8IHNpbG5pYTxsb25nIGxvbmc+KGl0KSA8PCBzdGQ6OmVuZGw7CiAgCiBzdGQ6OmNvdXQgPDwgIiB1bnNpZ25lZCBsb25nIGxvbmc6ICIgPDwgc3RkOjplbmRsOwogZm9yICggaW50IGl0ID0gMTsgaXQgPCAzMDsgKytpdCApIAogIHN0ZDo6Y291dCA8PCBpdCA8PCAiOiAiIDw8IHNpbG5pYTx1bnNpZ25lZCBsb25nIGxvbmc+KGl0KSA8PCBzdGQ6OmVuZGw7CiAgCiByZXR1cm4gMDsKfQ==