大數階乘


大數階乘

時間限制: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;
}        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章