Click Here to see the problem detail.

Solution

To ignore all the non-sense, if the input is between 8 to 13, print n!. It’s always overflow if n >= 14, and always underflow from 0 to 7. For negative numbers, negative odd numbers are overflows and negative even numbers are underflows.

Source Code
#include<stdio.h>
void factorial(long int n)
{
    long int fact=1;
    while(n>0)
    {
        fact*=n;
        n--;
    }
    printf("%ld\n",fact);
}
int main()
{
    long int n;
    while(scanf("%ld",&n)==1)
    {
        if(n<0 && n%2==0)
            printf("Underflow!\n");
        else if(n<0 && n%2!=0)
            printf("Overflow!\n");
        else if(n==0||n<=7)
            printf("Underflow!\n");
        else if(n>=14)
            printf("Overflow!\n");
        else
            factorial(n);
    }
    return 0;
}

 


Next Previous