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问题(泪)