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;
}
沒有留言:
張貼留言