这是ECNU OJ 上的一个题目,是某次的课后作业,我把它搬运上来与大家分享一下。
在 Excel 中有一个函数 IRR 用于计算一个投资项目的内部回报率(Internal return rate)。
在项目产生利润之前需要先投入建设资金(假设称为 c0),建成后每年产生的利润(假设称为 c1,c2…)。内部回报率(记为 r,范围为 −100%∽+100%)是到项目末期的现金流为 0 的贴现率。
例如:某项目建设资金为 10000,项目生产持续期为 3 年,每年利润为 3000,4000,5000,那么 r 满足:
−10000(1+r)^3+3000(1+r)^2+4000(1+r)+5000=0
Excel 计算结果 r 大约为 8.8963%。
本题的测试数据保证 r 只有唯一解。
Input
第 1 行:整数 T (1≤T≤10) 为问题数。
第 2∽3 行:第一个问题的数据。一行整数 n (1≤n≤100) 表示项目生产年数。后面 1 行包含 n+1 个由一个空格分隔的整数,表示投入的建设资金 c0 和 n 年中每年的利润 ci。c0>0,0≤ci≤1000000000。
第 4∽2T+1 行:后面问题的数据,格式与第一个问题相同。
Output
对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等),然后在每一行中输出计算出的 r(保留小数后 4 位)。
#include
#include
int main()
{