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
是的,把分号去掉,再把输出改成
谢谢大家
by xhz0311 @ 2022-12-28 13:30:55
@Slytherin_always 还有,你账户被封了,怎么来的
by xhz0311 @ 2022-12-28 13:33:45
另外,我语法还没学完谁能跟我解释一下第一篇代码是什么意思啊