1. 程式人生 > >1029:1!+2!+…+k!=?

1029:1!+2!+…+k!=?

Description

求1!+2!+…+k!=?,並判斷是否溢位。

Input

輸入為一個正整數k。

Output

若1!+2!+…+k!的值溢位unsigned(無符號整型)的範圍輸出“overflow”,否則輸出1!+2!+…+k!的結果。

Sample Input

5

Sample Output

153

HINT

如果一個值溢位某個變數的資料型別儲存範圍,但仍然存入該變數,那麼存入該變數中的值實際上是什麼?

#include <stdio.h>
int factor(int i)
{
    int n;
    if(i==0||i==1)
        n=1;
    else
        n=i*factor(i-1);//函式的遞迴呼叫
    return n;
}
int main()
{
    int k,i;
    unsigned int sum=0,sum1;
    scanf("%d",&k);
    if(k<=12)//k>=13將溢位 其餘解決方案:factor(k)/factor(k-1)==k;sum-sum1==factor(k)
    {for(i=1;i<=k;i++)
    {
        sum1=sum;
        sum+=factor(i);

    }
    printf("%d\n",sum);
    }
    else
        printf("overflow\n");
    return 0;
}