#include <iostream>
int facto(int k)
{
int n(1);
while (n < k + 1)
{
n = n * (n + 1);
n++;
}
return n;
}
void do_test(int arg, int expected)
{
std::cout << arg << "! " ;
int result = facto(arg) ;
if (result == expected)
std::cout << "Pass!\n" ;
else
std::cout << "Fail! Result: " << result << " Expected: " << expected << '\n';
}
void test_factorial()
{
do_test(4, 4*3*2) ;
do_test(3, 3*2) ;
do_test(2, 2) ;
do_test(1, 1) ;
do_test(0, 1) ;
}
int main()
{
test_factorial();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKaW50IGZhY3RvKGludCBrKQp7CiAgICBpbnQgbigxKTsKICAgIHdoaWxlIChuIDwgayArIDEpCiAgICB7CiAgICAgICAgbiA9IG4gKiAobiArIDEpOwogICAgICAgIG4rKzsKICAgIH0KICAgIHJldHVybiBuOwp9Cgp2b2lkIGRvX3Rlc3QoaW50IGFyZywgaW50IGV4cGVjdGVkKQp7CglzdGQ6OmNvdXQgPDwgYXJnIDw8ICIhICIgOwoJCglpbnQgcmVzdWx0ID0gZmFjdG8oYXJnKSA7CgkKCWlmIChyZXN1bHQgPT0gZXhwZWN0ZWQpCgkJc3RkOjpjb3V0IDw8ICJQYXNzIVxuIiA7CgllbHNlCgkJc3RkOjpjb3V0IDw8ICJGYWlsISBSZXN1bHQ6ICIgPDwgcmVzdWx0IDw8ICIgRXhwZWN0ZWQ6ICIgPDwgZXhwZWN0ZWQgPDwgJ1xuJzsgCn0KCnZvaWQgdGVzdF9mYWN0b3JpYWwoKQp7Cglkb190ZXN0KDQsIDQqMyoyKSA7Cglkb190ZXN0KDMsIDMqMikgOwoJZG9fdGVzdCgyLCAyKSA7Cglkb190ZXN0KDEsIDEpIDsKCWRvX3Rlc3QoMCwgMSkgOwp9CgppbnQgbWFpbigpCnsKICAgIHRlc3RfZmFjdG9yaWFsKCk7Cn0=