大数阶乘1042

#include<iostream>
#include<iomanip>
using namespace std;

int main(){
    int n;
    while(cin>>n){
        int i,j,k=0,a[10000];
        a[0]=1;
        for(i=1;i<=n;i++){
            int x=0;
            for(j=0;j<=k;j++){
                a[j]=a[j]*i+x;
                x=a[j]/100000;
                a[j]%=100000;
            }
            if(x!=0){
                k++;
                a[k]=x;

            }
        }
        cout<<a[k];
        for(i=k-1;i>=0;i--)
            cout<<setw(5)<<setfill('0')<<a[i];
        cout<<endl;
    }
    
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/wintersong/p/4387920.html