为什么前几个可以ac最后一个过不了嘞

P1035 [NOIP2002 普及组] 级数求和

Sylvan_Asher @ 2024-09-20 15:30:08

#include<bits/stdc++.h>
using namespace std;
int main(){
    int k=0;
    double a=0;
    int n=0;
    cin>>k;
    while (a<k){
        n++;
        a=a+1.0/n;
}
    cout<<n;
    return 0;
}

by LDH2AA @ 2024-10-02 10:21:59

@wxm18250239335 计算误差问题,如果要避免可以加上一个elps

double elps=1e-4

应该可以避免


by CodingAlbert @ 2024-10-08 17:12:13

第8行 a<k 改为 a<=k


by luogu_00 @ 2024-10-12 17:18:33

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int k=0;
    double a=0;
    int n=0;
    cin>>k;
    while (a<k){ //8行
        n++;
        a=a+1.0/n;
} //11行
    cout<<n;
    return 0;
}

代码分析

8 行的 while 循环条件应该是 a<=k
11 行的右括号前面应该加一个缩进。

正确代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int k=0;
    double a=0;
    int n=0;
    cin>>k;
    while (a<=k){
        n++;
        a=a+1.0/n;
    }
    cout<<n;
    return 0;
}

上一页 |