大數階乘
時間限制:3000 ms | 內存限制:65535 KB
難度:3
-
描述
- 我們都知道如何計算一個數的階乘,可是,如果這個數很大呢,我們該如何去計算它並輸出它?
-
輸入
- 輸入一個整數m(0<m<=5000)
-
輸出
- 輸出m的階乘,並在輸出結束之後輸入一個換行符
-
樣例輸入
-
50
-
樣例輸出
-
30414093201713378043612608166064768844377641568960512000000000000
#include<stdio.h>
#define N 20000
int num[N+2];
int main(){
int i, j;
int m;
int carry;//進位
num[0] = 1;
scanf("%d", &m);
for(i = 1; i <= m; i++){//第幾個數
for(j = 0; j <= N; j++){//各個位置乘i
num[j] = num[j] * i;
}
for(j = 0; j <= N; j++){//處理進位
carry = num[j] / 10;
num[j] = num[j] % 10;
num[j+1] = num[j+1] + carry;
}
}
for(i = N; num[i] == 0; i--);
for(j = i; j >= 0; j--)
printf("%d", num[j]);
printf("\n");
return 0;
}