內部收益率(二分法)

2021-08-05 20:02:28 字數 1220 閱讀 3203

在金融中,我們有時會用內部收益率irr來評價專案的投資財務效益,它等於使得投資淨現值npv等於0的貼現率。換句話說,給定專案的期數t、初始現金流cf0和專案各期的現金流cf1, cf2, …,cft,irr是下面方程的解:

為了簡單起見,本題假定:除了專案啟動時有一筆投入(即初始現金流cf0 < 0)之外,其餘各期均能賺錢(即對於所有i=1,2,…,t,cfi > 0)。根據定義,irr可以是負數,但不能大於-1。

input

輸入檔案最多包含25組測試資料,每個資料佔兩行,第一行包含乙個正整數t(1<=t<=10),表示專案的期數。第二行包含t+1個整數:cf0, cf1, cf2, …, cft,其中cf0 < 0, 0 < cfi < 10000 (i=1,2,…,t)。t=0表示輸入結束,你的程式不應當處理這一行。

output

對於每組資料,輸出僅一行,即專案的irr,四捨五入保留小數點後兩位。如果irr不存在,輸出」no」,如果有多個不同irr滿足條件,輸出」too many」(均不含引號)

sample input

1 -1 2

2 -8 6 9

0 sample output

1.00

0.50

分析:給了乙個irr為未知數的方程,求方程的解,這是乙個一元高次方程,它的解一定存在,而題目中有一處錯誤,, 應該是錯誤吧, irr的範圍應該是不小於-1吧? 看樣例就不是大於。。

然後這裡irr的具體範圍不知道,就設定乙個最小值l=-1.0,最大值r盡可能的大一些,我用的1e8,小了的話可能wa吧。 然後二分查詢

#include

#include

#include

#include

#include

using

namespace

std;

#define mem(a,n) memset(a,n,sizeof(a))

int r1,r2,r3,c1,c2,c3;

int dxy[8][2]= ;

const

int n=15;

const

int eps=1e-6;

int main()

if(sum+a[0]>0)

l=mid;

else r=mid;

}printf("%.2lf\n",mid);

}return

0;}

HPU 1167 內部收益率 二分

time limit 1 sec memory limit 128 mb submit 28 solved 6 submit status web board 在金融中,我們有時會用內部收益率irr來評價專案的投資財務效益,它等於使得投資淨現值npv等於0的貼現率。換句話說,給定專案的期數t 初始現...

nyoj666 內部收益率 (二分)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 在金融中,我們有時會用內部收益率irr來評價專案的投資財務效益,它等於使得投資淨現值npv等於0的貼現率。換句話說,給定專案的期數t 初始現金流cf 0和專案各期的現金流cf 1,cf 2,cft irr是下面方程的解 為了簡單...

湖南省第六集程式設計競賽 E 內部收益率(二分法)

description 在金融中,我們有時會用內部收益率irr來評價專案的投資財務效益,它等於使得投資淨現值npv等於0的貼現率。換句話說,給定專案的期數t 初始現金流cf 0和專案各期的現金流cf 1,cf 2,cft irr是下面方程的解 為了簡單起見,本題假定 除了專案啟動時有一筆投入 即初始...