hgdhjgj @ 2024-03-10 16:03:26
#include<stdio.h>
int main(){
int k,n;
double sum=0;
int i=1;
scanf("%d",&k);
while(sum<k){
sum=sum+(1./i);
i++;
n=i-1;
}
printf("%d",n);
return 0;
by zjh114514 @ 2024-03-10 16:30:55
误差?
by rrrstj @ 2024-04-11 21:12:42
@hgdhjgj 我也不懂,这个简直太抽象了这个题```cpp
using namespace std;
int main() { double Sn = 0; int k = 0; cin >> k; double n = 1; for (; Sn < k; ++n) { Sn += 1.0 / n; } cout << n - 1; // n减1才是满足条件的最小值 return 0; }
这个是对的我自己写的那个代码反而是错的???我请问呢???
by ruihang @ 2024-04-13 11:52:45
呃......
by AnnaQ @ 2024-04-21 11:50:39
@hgdhjgj 如果把
n=i-1;
和
i++;
调换一下顺序也能过,因为i是从1开始的
by AnnaQ @ 2024-04-21 11:52:54
@AnnaQ 然后得把
by gwg666 @ 2024-05-03 20:25:24
你随便举个例子就知道,当sum=1+1/2成立时,n等于2,但是因为你的i++在下面,导致i又自增一次,i变成了3,输出3就错了