输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
代码如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<limits.h>
#include<queue>
#include<stack>
#include<vector>
#include<math.h>
#include<map>
using namespace std;
#define maxn 50005
int a[maxn]={0,1};
int len=1;
void work(int x)
{
int i,up=0;
for(i=1;i<=len;i++)
{
up=a[i]*x+up;
a[i]=up%10000;
up/=10000;
}
if(up)
a[++len]=up;
}
int main()
{
int n,i;
__int64 ans=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
work(i);
printf("%d",a[len]);
for(i=len-1;i>0;i--)
printf("%04d",a[i]);
printf("\n");
}