75分求调
查看原帖
75分求调
1658274
A_ZHEN_楼主2025/6/15 16:27

思路:每次纪录阶乘,求下一次阶乘时直接乘以上一次阶乘。

#include<bits/stdc++.h>
using namespace std;
int a[2000]={0},s[2000]={0};
int main(){
    int n,h;
    cin>>n;
    s[0]=1;
    for(int i=1;i<=n;i++){
        int num=0,j;
        for(j=0;j<=h;j++){
            s[j]*=i;
            s[j]+=num;
            num=s[j]/10;
            s[j]%=10;
        }
        if(num!=0){
            s[j]+=num;
        }else{
            j--;
        }
        h=j;
        for(int k=0;k<=j;k++){
            a[k]+=s[k];
            a[k+1]+=a[k]/10;
            a[k]%=10;
        }
    }
    for(int i=h;i>=0;i--){
        cout<<a[i];
    }
    return 0;
}
2025/6/15 16:27
加载中...