大数阶乘

来源:互联网 发布:耐克网络分销 编辑:程序博客网 时间:2024/06/18 17:59
#include<bits/stdc++.h>using namespace std;const int maxn = 1e6+10;const int Hex = 1000;int num[maxn];int main(){    int x,n=1,q;    memset(num,0,sizeof(num));    cin >> x;    num[0]=1;    for(int i=1;i<=x;i++){        q=0;        for(int j=0;j<n;j++){            num[j] = num[j]*i + q;//该处不能添加判断,否则会影响下一位的进位,因为进位值没有更新还是上一位的,//所以结果会受影响            q = floor(num[j]/Hex);            num[j] = num[j]%Hex;            if(j==n-1&&q>0)                n++;        }    }    printf("%d",num[n-1]);    for(int i=n-2;i>=0;i--)        printf("%03d",num[i]);    return 0;}

原创粉丝点击