mod巨佬测试点三绿两红 wa的都是大的点

P1035 [NOIP2002 普及组] 级数求和

CrNidaree @ 2023-09-19 20:39:21

#include<bits/stdc++.h>
using namespace std;
inline int read()
{  int s=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
   while(c>='0'&&c<='9'){s=s*10+c-'0';c=getchar();}return s*f;
}
int main(){
    int k=read();
    float s=0.0;
    for(double i=1;;i++){
        s+=1/i; 
        if(s>k){cout<<i;break;}
    }

    return 0; 
} 

by Btls @ 2023-09-19 20:49:36

float 精度不够,用double


by Btls @ 2023-09-19 20:51:32

而且你为什么循环i要用double


by CrNidaree @ 2023-09-19 21:43:00

@2020wjn okok 不过for那里不用double不出答案(晕)


by Btls @ 2023-09-19 21:50:37

但是你输出应该写成:

cout<<(int)i

不然当k=15时,输出的是科学计数法,答案不对。


by jky2023 @ 2023-10-27 11:39:06

@2020wjn 确实,我看见这个题目就猜到了,也是一样的float问题(泪)


|