全 WA 有无大佬来帮我看看这题 不知道哪里错了

P1035 [NOIP2002 普及组] 级数求和

Wsm4321 @ 2023-02-20 11:38:30

#include<iostream>
using namespace std;
int main() {
    double sum=0.0;
    int k;
    double b=0.0;
    cin>>k;
    for(int i=1;i>0;i++){
        int n=i;
        sum=(1.0)*(n+1)/2;
        if(sum>k){
            cout<<i<<endl;
            break;
        }
    }
    return 0;
}

by Enguang_Cai @ 2023-02-20 11:56:08

#include<iostream>
using namespace std;
int main() {
    double sum=0.0;
    int k;
    cin>>k;
    for(double i=1;;i++){
        sum += double(1/i);
        if(sum>k){
            cout<<i<<endl;
            break;
        }
    }
    return 0;
}

by Enguang_Cai @ 2023-02-20 12:10:53

@Wsm4321

  1. 首先我建议你把所有的int都改成double。这样可以保证你运算的结果最后是double类型。

  2. 其次你的第十行代码是逻辑漏洞的,可以自己想一想。我有点看不懂你为什么要这么写,所以也不好解释他为什么是错的。

还有一个无关痛痒的小建议。不要用这个

#include<iostream>

下面这个头文件更好用

#include<bits/stdc++.h>

by Enguang_Cai @ 2023-02-20 12:11:59

@Enguang_Cai 这个是我的解法你可以参考一下


|