Codeup 1917 Problem B: N的階乘

題目鏈接http://codeup.cn/problem.php?cid=100000593&pid=1

題目描述
輸入一個正整數N,輸出N的階乘。

輸入
正整數N(0<=N<=1000)

輸出
輸入可能包括多組數據,對於每一組輸入數據,輸出N的階乘

樣例輸入
0
4
7

樣例輸出
1
24
5040

代碼

#include<cstdio>
#include<cstring>

struct bign {
	int d[100010];				//數組要足夠大
	int len;
	bign () {
		memset(d, 0, sizeof(d));
		len = 0;
	}
};

bign charge(char str[]) {
	bign a;
	a.len = strlen(str);
	for(int i = 0; i < a.len; i++)
		a.d[i] = str[a.len - 1 - i] - '0';
	return a;
}

void print(bign a) {
	for(int i = a.len - 1; i >= 0; i--)
		printf("%d", a.d[i]);
	printf("\n");
}

bign comput(bign a, int b) {
	bign c;
	int carry = 0;
	for(int i = 0; i < a.len; i++){
		int temp = a.d[i] * b + carry;
		c.d[c.len++] = temp % 10;
		carry = temp / 10;
	}
	while(carry != 0) {
		c.d[c.len ++] = carry % 10;
		carry /= 10;
	}
	return c;
}

int main () {
	int n;
	while(scanf("%d", &n) != EOF){
		bign ans;
		ans.d[0] = 1;        //從1開始
		ans.len = 1;
		for(int i = 2; i <= n; i++)
			ans = comput(ans, i);
		print(ans);
	}
	return 0;
}
發佈了186 篇原創文章 · 獲贊 9 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章