今天来和大家讲讲这个级数求和的故事。
小编,当时在做这个题目的时候错了好几次,感觉和那些比较标准的解答没有什么相差之处,可就是过不去,可以让大家看看笨笨的小编。(初次接触c++,还有些用的不是很六,希望大佬指点!)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k,n;
float sum=0;
cin>>k;
for(n=1;;n++){
sum+=1.0/n;
if(sum>k) break;
}
cout<<n;
return 0;
}
结果好多个WA,哇哇哇!
那么究竟错在哪里呢?大家可以想想,当这个n越来越大的时候,1/n的精度已经远远超出float,即使你后面再sum+=1.0/n,其实也就无异于sum+=0。后面的结果,可想而知。
题目不难,细节处理还是需要很到位的哦。
最后我通过的代码。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int k,n;
double sum=0;
cin>>k;
for(n=1;;n++){
sum+=1.0/n;
if(sum>k) break;
}
cout<<n;
return 0;
}
希望可以给和我类似的小伙伴带来帮助!