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;
}
发布了162 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Rhao999/article/details/104232489