不用高精度就写出来了
查看原帖
不用高精度就写出来了
1366092
WXX532楼主2024/7/25 13:53
#include<bits/stdc++.h>
using namespace std;
unsigned long long a[40005],lc[40005]={0,1};//int long long对于最大数过不去 
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        int chang=40000,t=0;
        while(lc[chang]==0&&chang>0)chang--;
        for(int j=1;j<=chang+1;j++){
            lc[j]*=i;
        }
        for(int j=1;j<=chang+1;j++){
            lc[j+1]+=lc[j]/10;
            lc[j]%=10;
        }
//      for(int i=100;i>=1;i--)cout<<lc[i];
//      cout<<endl;
        chang=40000;
        while(lc[chang]==0&&chang>0)chang--;
        for(int j=1;j<=chang+1;j++){
            a[j]+=lc[j];
            a[j+1]+=a[j]/10;
            a[j]%=10;
        }
    }//避免多于计算 
    int chang=40000;
    while(a[chang]==0&&chang>0)chang--;
    for(int i=chang;i>=1;i--)cout<<a[i];
    return 0;
}
2024/7/25 13:53
加载中...