算法篇-高精度-阶乘的精确值

来源:互联网 发布:阿里云视频服务器 编辑:程序博客网 时间:2024/06/06 01:30

题目:输入不超过1000的正整数n,输出n!=1x2x3···xn的精确结果。

样例输入:30

样例输出:265252859812191058636308480000000

 

代码如下:

#include <iostream>#include <cstring>using namespace std;const int maxn=3000;int f[maxn];int main(){    int i,j,n;    cin>>n;    memset(f,0,sizeof(f));    f[0]=1;    for (i=2;i<=n;i++)    {        int c=0;        for (j=0;j<maxn;j++)        {            int s=f[j]*i+c;            f[j]=s%10;            c=s/10;        }    }    for (j=maxn-1;j>=0;j--)        if(f[j])        break;    for (i=j;i>=0;i--)        cout<<f[i];    return 0;}

运行结果:

高精度求N的阶乘做过好几次了,可惜自己似乎还是没有弄清楚,只能靠强记将算法记住。。。谁能给我解释下?
0 0
原创粉丝点击