游客 Signup | Login
中文 | En

2808 - 求n!的值

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

Input

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

Output

一行:表示n!的数

Examples

Input

20

Output

2432902008176640000

Hint

高精算法

Solution 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;
}

Hint

高精算法

Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题