2808 - 求n!的值

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

输入n,求n!的值。n!=123...n

题目输入

一行:一个正整数n,1<=n<=2000

题目输出

一行:表示n!的数

输入/输出样例

输入格式

20

输出格式

2432902008176640000

C++解答

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 6000;
int a[N];

void fact(int n){
	fill(a,a+N,0);
	a[0]=a[1]=1;
	for (int i=1; i<=n; i++)
	{
		for (int j=1; j<=a[0]; j++) a[j]*=i;
		for (int j=1; j<=a[0]; j++)
		{
			a[j+1]+=a[j]/10;
			a[j]%=10;
		}
		while (a[a[0]+1])
		{
			a[0]++;
			a[a[0]+1]=a[a[0]]/10;
			a[a[0]]%=10;
		}
	}
}

void output(int a[]){
	for (int i=a[0]; i>=1; i--) cout<<a[i];
	cout<<endl;
}

int main(){
	int n;
	cin>>n;
	fact(n);
	output(a);
	return 0;
}