已AC,问个问题

P1035 [NOIP2002 普及组] 级数求和

xhz0311 @ 2022-12-28 12:13:45

本人是一个连 ju ruo 两个字都打不出来的 ju ruo。

问个问题。

为什么下面这段代码可以AC

#include <cstdio>
using namespace std;
int main()
{
    int k,n=0;
    scanf("%d",&k);
    for(double sn=0; Sn<=k; n++, sn+=1.0/n);
    printf("%d",n);
    return 0;
}

但是这样写就会TLE

#include <cstdio>
using namespace std;
int main()
{
    int k,n=1;
    scanf("%d",&k);
    double sn;
    for(sn=0.0; sn<=k; n++);
    {
        sn+=1.0/n;
    }
    printf("%d",n);
    return 0;
}

by _maojun__ @ 2022-12-28 12:18:03

@xhz0311 首先你第一个代码应该会 ce,然后第二个代码的 for 后面加了一个分号,而且最后应该输出 n-1 而不是 n


by Milthm @ 2022-12-28 12:19:53

@_maojun__ 正确的,第一个代码变量名大写了,会CE


by HLJoier @ 2022-12-28 13:05:01

@xhz0311 死循环了,为什么要n++啊,不应该是sn++


by xhz0311 @ 2022-12-28 13:16:35

@_maojun__ 但是他并没有ce。。。 事实上,这是题解中的第一篇


by zzyxl_qaq @ 2022-12-28 13:17:52

@xhz0311 因为第二串代码中你在for后面加了分号,这样你的代码就会一直执行for,而且没有循环体


by zzyxl_qaq @ 2022-12-28 13:19:08

@_maojun__

有时卡评测机死循环也会写成while(1);


by xhz0311 @ 2022-12-28 13:27:39

@Slytherin_always 我看看。

另外,我语法还没学完谁能跟我解释一下第一篇代码是什么意思啊


by xhz0311 @ 2022-12-28 13:30:22

@Slytherin_always 是的,把分号去掉,再把输出改成 n-1 第二种也AC了。

谢谢大家


by xhz0311 @ 2022-12-28 13:30:55

@Slytherin_always 还有,你账户被封了,怎么来的


by xhz0311 @ 2022-12-28 13:33:45

另外,我语法还没学完谁能跟我解释一下第一篇代码是什么意思啊


| 下一页