#include <stdio.h>
// inner loop
unsigned mul(unsigned a, unsigned b) {
unsigned res = 0;
while (b--) res += a;
return res;
}
// outer loop
unsigned fact(unsigned n) {
unsigned f = 1;
while (n) f = mul(f, n--);
return f;
}
int main(void) {
int n = 7;
printf("%d! is %u\n", n
, fact
(n
)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyBpbm5lciBsb29wCnVuc2lnbmVkIG11bCh1bnNpZ25lZCBhLCB1bnNpZ25lZCBiKSB7CiAgICB1bnNpZ25lZCByZXMgPSAwOwogICAgd2hpbGUgKGItLSkgcmVzICs9IGE7CiAgICByZXR1cm4gcmVzOwp9CgovLyBvdXRlciBsb29wCnVuc2lnbmVkIGZhY3QodW5zaWduZWQgbikgewogICAgdW5zaWduZWQgZiA9IDE7CiAgICB3aGlsZSAobikgZiA9IG11bChmLCBuLS0pOwogICAgcmV0dXJuIGY7Cn0KCmludCBtYWluKHZvaWQpIHsKCWludCBuID0gNzsKICAgIHByaW50ZigiJWQhIGlzICV1XG4iLCBuLCBmYWN0KG4pKTsKCXJldHVybiAwOwp9Cg==