求助

P1009 [NOIP1998 普及组] 阶乘之和

lyz97531 @ 2022-10-14 16:20:27

???50分

#include<bits/stdc++.h>
using namespace std;
int n;
long long x,ans;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        x=1;
        for(int j=1;j<=i;j++)
        {
            x*=j;
        }
        ans+=x;
    }
    cout<<ans;
    return 0;
}

by WZWZWZWY @ 2022-10-14 16:26:15


by _Virgo_ @ 2022-10-14 16:26:23

【其他说明】

注,《深入浅出基础篇》中使用本题作为例题,但是其数据范围只有 n \le 20,使用书中的代码无法通过本题。

如果希望通过本题,请继续学习第八章高精度的知识。


by 155TuT @ 2022-10-14 16:27:35

非常经典!这道题你这么写只能50(

学下高精度,O(n!)的情况下按你代码好像n最多能到15左右的样子,数据范围到50(


by As_Nerve @ 2022-10-14 16:32:15

开高精,自己背板子(不会真的有人背高精板子吧)。

    __int128

似乎可以用了QWQ


by int_stl @ 2022-10-26 16:54:08

python 3

import sys
a=int(input())
ans=0
fac=1
for i in range(1,a+1):
    fac*=i
    ans+=fac
print(ans)

C++ 14

#include <cstring>
#include <iostream>
using namespace std;
#define maxn 10000
struct Bigint
{
    int len,a[maxn];
    Bigint(int x=0)
    {
        memset(a,0,sizeof(a));
        for(len=1; x; len++)
        {
            a[len]=x%10,x/=10;
        }
        len--;
    }
    int &operator[](int i)
    {
        return a[i];
    }
    void flatten(int L)
    {
        len=L;
        for(int i=1; i<=len; i++)
        {
            a[i+1]+=a[i]/10,a[i]%=10;
        }
        for(; !a[len];)
        {
            len--;
        }
    }
    void print()
    {
        for(int i=max(len,1); i>=1; i--)
        {
            cout<<a[i];
        }
    }
};
Bigint operator+(Bigint a,Bigint b)
{
    Bigint c;
    int len=max(a.len,b.len);
    for(int i=1; i<=len; i++)
    {
        c[i]+=a[i]+b[i];
    }
    c.flatten(len+1);
    return c;
}
Bigint operator*(Bigint a,int b)
{
    Bigint c;
    int len=a.len;
    for(int i=1; i<=len; i++)
    {
        c[i]=a[i]*b;
    }
    c.flatten(len+11);
    return c;
}
int main()
{
    Bigint ans(0),fac(1);
    int m;
    cin>>m;
    for(int i=1; i<=m; i++)
    {
        fac=fac*i;
        ans=ans+fac;
    }
    ans.print();
}

python比C++的数据范围大多了


by lyz97531 @ 2023-07-16 14:35:05

@各位大佬 谢谢


|