题目:计算阶乘在10000~6227020800之间的值,不在范围对应输出Under或者Over。
分析:简单题、数论。因为13!=6227020800,7!<10000<8!所以计算很简单。
注意:负数情况,奇数输出Overflow,偶数输出Underflow。
#include <cstdlib>
#include <cstdio>
#include <cmath>
int main()
{
int n;
while ( ~scanf("%d",&n) ) {
if ( (n>=0&&n<8) || (n<0&&((n*-1)%2)==0) ) printf("Underflow!\n");
if ( n == 8 ) printf("40320\n");
if ( n == 9 ) printf("362880\n");
if ( n == 10 ) printf("3628800\n");
if ( n == 11 ) printf("39916800\n");
if ( n == 12 ) printf("479001600\n");
if ( n == 13 ) printf("6227020800\n");
if ( n > 13 || (n<0&&((n*-1)%2)==1) ) printf("Overflow!\n");
}
return 0;
}