Factorial! You Must be Kidding!!!
沒啥規則的一題 = =,
input有可能是負數,所以要考慮負數的情況。
什麼?你說負數有階層?娜舞摳琳!
是的題目也這樣寫啊!
反正-1!是Overflow,
-2!是Underflow,
-3!是Overflow,
-4!是Underflow,
以此類推,
至於為什麼……不要問比較好,
問了會腦殘。
(-1! = 0! / 0,把他當成無限大去想,
-2! = -1! / -1,負無限大)
/* ACM 10323 Factorial! You Must be Kidding!!! * mythnc * 2011/12/17 09:24:42 * run time: 0.028 */ #include <stdio.h> #define MAX 6227020800LL int main(void) { int i, n; long long ans[20] = { 1 }; for (i = 1; ans[i - 1] < MAX; i++) ans[i] = ans[i - 1] * i; while (scanf("%d", &n) == 1) if (n < 0) { n *= -1; if (n % 2 == 1) printf("Overflow!\n"); else printf("Underflow!\n"); } else if (n < 8) printf("Underflow!\n"); else if (n >= i) printf("Overflow!\n"); else printf("%lld\n", ans[n]); return 0; }
沒有留言:
張貼留言