本题是一个思维题局部贪心便能解决,一开始以为要每次一半选手出错,但是结果不对,又改为平方根个选手出错,结果还是不对。
教训:
看完题解才知道既然每次都要有人答案错误,从而使下一次问答的分母变小,如果采用跳跃式分母递减(折半或者开平方)会导致分母较大且参与的运算次数过多,因为局部贪心策略是将不利因素降到最低,所以原先跳跃式错误,于是使用逐步递减法这样会使分母逐渐优化变小且过大的分母只参与尽量小的次数计算从而实现贪心策略
#include<iostream>
#include<cstdio>
#include<math.h>
using namespace std;
int main(){
double t;
cin>>t;
double sum=0;
if(t==1)cout<<"1.000000000000"<<endl;
else if(t==2)cout<<"1.500000000000"<<endl;
else
while(1){ //分母递减式变小使sum尽量变大
sum+=1.0/t;
t--;
if(t==0)break;
}
if(sum)
printf("%.12f",sum);
return 0;
}