内部收益率
在金融中,我们有时会用内部收益率IRR来评价项目的投资财务效益,它等于使得投资净现值NPV等于0的贴现率。换句话说,给定项目的期数T、初始现金流CF0和项目各期的现金流CF1, CF2, ...,CFT,IRR是下面方程的解:
为了简单起见,本题假定:除了项目启动时有一笔投入(即初始现金流CF0 < 0)之外,其余各期均能赚钱(即对于所有i=1,2,...,T,CFi > 0)。根据定义,IRR可以是负数,但不能大于-1。
1
-1 2
2
-8 6 90
1.00
0.50
无
想法:
二分
代码:
#include<stdio.h> #include<string.h> int a[1010]; int main() { int n; while(scanf("%d",&n)&&n) { int x; scanf("%d",&x); int i,j; for(i=0;i<n;i++) { scanf("%d",&a[i]); } double l=-1.0,r=1e6; double s,f,m; for(i=0;i<100;i++) { s=0.0; f=1.0; m=(l+r)/2; for(j=0;j<n;j++) { f=f/(1+m); s=s+a[j]*f; } if(s>(-x)) { l=m; } else { r=m; } } printf("%.2lf\n",m); } return 0; }