求助,我这个为什么只有50分

P1009 [NOIP1998 普及组] 阶乘之和

jd123 @ 2022-09-16 20:43:01


int main (){
    int a,i,sum=1,S=0,cnt=0;
    scanf("%d",&a);
    int j=a;
   for(i=a;i>=1;i--)
   {
     for(;j>1;j--)
    {
        sum*=j;

    }
    cnt++;
    S+=sum;
    sum=1;
    j=a-cnt;
   }
    printf("%d",S);
    return 0;
}

by Katz @ 2022-09-16 20:44:09

算法标签:数学 高精度


by RP_INT_MAX @ 2022-09-16 20:44:52

@jd123 注意,需要用高精度


by liangbowen @ 2022-09-16 20:45:03

数据范围很大,所以 n! 会超过 int 甚至 long long,因此本题需要使用高精度。高精度是一种算法,通过模拟竖式来实现。具体可以参照题解,或者使用 python。


by RP_INT_MAX @ 2022-09-16 20:45:43

你得审审题了。

注,《深入浅出基础篇》中使用本题作为例题,但是其数据范围只有 n \le 20n≤20,使用书中的代码无法通过本题。 如果希望通过本题,请继续学习第八章高精度的知识。


by jd123 @ 2022-09-16 20:46:49

@liangbowen 高精度算法在哪学


by Sator1 @ 2022-09-16 20:47:40

@jd123 题目右边有题解,有百度,或者你有教练,有书


by liangbowen @ 2022-09-16 20:48:03

  1. P1601 and P1303 的题解
  2. 百度

by liangbowen @ 2022-09-16 20:48:30

不过先学完语言基础,再学高精度


by RP_INT_MAX @ 2022-09-16 20:51:02

@jd123 P1932 P1601 P1480 P2005 P1919(雾


by RP_INT_MAX @ 2022-09-16 20:51:32

一些练习高精的模板题。


|