c0621zy @ 2022-09-06 17:41:20
#include <stdio.h>
int main(){
double sum=0.0;
int i;
int k;
scanf("%d",&k);
for(i=1;sum<=k;i++)
{ sum+=1.0/i;
}
printf("%d",i);
return 0;
}
by LeNotFound @ 2022-09-06 18:01:42
@c0621zy 循环那里改一下
for (i = 1;; i++)
{
sum += 1.0 / i;
if (sum >= k)
{
break;
}
}
by c0621zy @ 2022-09-06 20:15:12
@LeNotFound 可以解释一下原来的写法为什么不行吗?
by LeNotFound @ 2022-09-07 01:29:49
@c0621zy
之前的for循环,在sum>k的时候又做了一次i++
for循环在条件不成立的时候 也会执行一行
for(i=1;sum<=k;i++)
其中包含i++操作,所以结果比正解多了1
应该是发现满足立即跳出
by c0621zy @ 2022-09-07 10:52:26
@LeNotFound 明白了,感谢!