求大神告诉我这个怎么改?谢谢啦(初学者)

P1009 [NOIP1998 普及组] 阶乘之和

Aiaoming @ 2024-11-20 18:33:41

#include<stdio.h>
int factoril(int n)
{
    int result=1;
    for( int i=1;i<=n;i++)
    {
        result*=i;
    }
    return result;
}

int main()
{
    int sum=0;
    int n;
    scanf("%d",&n);
    for( int i=1;i<=n;i++)
    {
       sum+= factoril(i);
    }
    printf("%d\n",sum);
    return 0;
}

by wuyusheng @ 2024-11-20 18:40:04

@Aiaoming这题N的范围很大,要用高精度。


by abssortpow1145145 @ 2024-11-20 19:47:08

尽供参考


#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long n,k[100005]={0},l;
    cin >> n;
    for(int p=1;p<=n;p++)
    {
        int x=p,xk[10005]={1},len=1;
        for(int i=1;i<=x;i++)
        {
            int j,t=0;
            for(j=0;j<len || t!=0;j++)
            {
                int s=xk[j]*i+t;
                xk[j]=s%10;
                t=s/10;
            }
            len=j;
        }
        int h,tk=0;
        for(h=0;h<len || tk!=0;h++)
        {
            int v=xk[h]+k[h]+tk;
            k[h]=v%10;
            tk=v/10;
        }
        l=len;
    }
    for(int i=l-1;i>=0;i--)
    {
        cout << k[i];
    }
    return 0;
}

|