输入N求N的阶乘的准确值。
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
Input
输入N(1 <= N <= 10000)
Output
输出N的阶乘
Input示例
5
Output示例
120
题意:。。。。
思路:说实话我一开始真没想到什么好算法,暴力肯定是不行的,看了看博客才知道原来是采用分割的方法,假如你要将结果分割成m位的话,就在计算的时候对1em取余,最后格式化输出就好了;(真是大神啊QAQ)
下面附上代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1000000;
ll a[10000];
int main()
{
int n,c,m=0;
cin>>n;
a[0]=1;
for(int i=1;i<=n;i++)
{
c=0;
for(int j=0;j<=m;j++){
a[j]=a[j]*i+c;
c=a[j]/N;
a[j]%=N;
}
if(c>0){
m++;
a[m]=c;
}
}
printf("%lld",a[m]);
for(int i=m-1;i>=0;i--) printf("%0.6lld",a[i]);
printf("\n");
return 0;
}