大數階乘
時間限制:3000ms ?|? 內存限制:65535KB
難度:3
- 描述
- 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它并輸出它?
- 輸入
- 輸入一個整數m(0<m<=5000) 輸出
- 輸出m的階乘,并在輸出結束之后輸入一個換行符 樣例輸入
-
50
樣例輸出 -
30414093201713378043612608166064768844377641568960512000000000000
?
?
#include "stdio.h"
#define maxn 18000
int a[maxn];
int main()
{int m,i,index,c; // 0<m<=5000 ,m=5000時數據有 16326 位數據 scanf("%d",&m);a[0]=1; index=0; m++;if(m>=0 && m<=5000){while(--m){c=0;for(i=0;i<=index;i++){c=m*a[i]+c; a[i]=c%10; c/=10; }while(c) {a[++index]=c%10;c/=10;}}}for(i=index;i>=0;i--)printf("%d",a[i]);printf("\n");return 0;
}
算法思路?形如小學生算式計算