麻烦看看为什么不对

P1035 [NOIP2002 普及组] 级数求和

T___Y @ 2022-07-31 13:47:34

#include<stdio.h>
int main()
{
    int k,n=1;
    double s=0.0;
    scanf("%d",&k);
    while(s<k)
    {
        s=s+1.0/n;
        n++;
    }
    printf("%d\n",n);
    return 0;
}

by Tobiichi_Origami @ 2022-07-31 13:52:29

@T___Y k需要强制转换


by cqazy811 @ 2022-07-31 13:57:09

@T___Y 初始值 n=0n++ 放在 s=s+1.0/n 之前;按照你这样的话当到答案的时候 n 还会再加一就会导致答案比原来的大 1


by _wjr_ @ 2022-07-31 13:58:04

还有,原题给的是 > ,所以while里要写 \le


by _wjr_ @ 2022-07-31 13:58:53

当然这题数据不够强,写 < 也是对的


by T___Y @ 2022-07-31 14:23:10

@bxnya_miana 噢对哦谢谢


by T___Y @ 2022-07-31 14:23:33

@Death_wjr 谢谢


|