为什么50分???(大佬们要改代码的话,请在原有代码上改);

P1009 [NOIP1998 普及组] 阶乘之和

zhanghengrui479937 @ 2023-12-20 08:53:43

#include<cstdio>
int f_ans=0;
int factorial(int n){
    f_ans=n;
    for(int i=n-1;i!=0;i--) f_ans*=i;
    return f_ans;
}
int main(){
    int n;
    scanf("%d",&n);
    int ans=0;
    for(int i=1;i<=n;i++) ans+=factorial(i);
    printf("%d\n",ans);
    return 0;
}

后两个测试点没过


by mengmeng123456 @ 2023-12-20 09:45:35

这道题要用到高精度算法


by mengmeng123456 @ 2023-12-20 09:49:55

数据范围是n<=50,50!的结果远远超出了C++unsigned long long的范围,所以要使用高精度


by TomXIACH @ 2023-12-20 12:53:12

学python


by zhm666wan @ 2024-01-06 13:39:51

@zhanghengrui479937 超范围了,要用高精度乘法+高精度加法,要开数组,主要就是处理进位


|