题目描述
输入
输出
对于每组数据,输出仅一行,即项目的IRR,四舍五入保留小数点后两位。
样例输入
1 -1 2 2 -8 6 9 0
样例输出
1.00 0.50
二分法找:
#include<bits/stdc++.h>
using namespace std;
double a[100000];
double solve(int n)
{
double mid,l,r,f,ras;
l=-1.0;
r=10000;
for(int t=1;t<=100;t++)
{
ras=0;
f=1.0;
mid=(l+r)/2;
for(int i=1;i<=n;i++)
{
f=f/(mid+1);
ras+=f*a[i];
}
if(ras>(-a[0])) l=mid;
else r=mid;
}
return mid;
}
int main()
{
int n;
while(cin>>n&&n)
{
for(int i=0;i<=n;i++)
{
cin>>a[i];
}
printf("%.2lf\n",solve(n));
}
}