公式:Hn=(n-1)*H2+(n-2)*(n-1)-(n-2)*H1
代码如下:
#include<iostream>
#include<cstdio>
using namespace std;
const double eps=1e-8;
int N;
double A;
double cal(double mid,int n)
{
return (n-1)*mid+(n-2)*(n-1)-(n-2)*A;
}
bool can(double mid)
{
double h=0;
for(int i=3;i<=N;i++)
{
h=cal(mid,i);
if(h<0)
return false;
}
return true;
}
int main()
{
while(cin>>N>>A)
{
double l=0,r=10000000000.0,mid;
while(r-l>eps)
{
mid=(l+r)/2.0;
if(can(mid))
r=mid;
else
l=mid;
}
double ans=cal(r,N);
printf("%.2lf\n",ans);
}
return 0;
}