3192. 计算内部回报率

Easy二分查找

时间限制:2000 ms

内存限制:256 MiB

题面

在 Excel 中有一个函数 IRR 用于计算一个投资项目的内部回报率(Internal return rate)。

<img src="/upload/3192/3192_1.172c067ac507bfe45a4a4157d3974d69.png">

在项目产生利润之前需要先投入建设资金(假设称为 c0c_0),建成后每年产生的利润(假设称为 c1,c2c_1, c_2 \ldots)。内部回报率(记为 rr,范围为 100%-100\%~+100%+100\%)是到项目末期的现金流为 00 的贴现率。

例如:某项目建设资金为 1000010000,项目生产持续期为 33 年,每年利润为 3000,4000,50003000,4000,5000,那么 rr 满足:

10000(1+r)3+3000(1+r)2+4000(1+r)+5000=0-10000(1+r)^3+3000(1+r)^2+4000(1+r)+5000=0

Excel 计算结果 rr 大约为 8.8963%8.8963\%

本题的测试数据保证 rr 只有唯一解。

输入格式

11 行:整数 TT (1T101 \le T \le 10) 为问题数。

22~33 行:第一个问题的数据。一行整数 nn (1n1001 \le n \le 100) 表示项目生产年数。后面 1 行包含 n+1n+1 个由一个空格分隔的整数,表示投入的建设资金 c0c_0nn 年中每年的利润 cic_ic0>0,0ci1000000000c_0>0,0 \le c_i \le 1 000 000 000

44~2T+12T+1 行:后面问题的数据,格式与第一个问题相同。

输出格式

对于每个问题,输出一行问题的编号(0 开始编号,格式:case #0: 等),然后在每一行中输出计算出的 rr(保留小数后 44 位)。

样例

输入

3
2
200 100 100
3
10000 3000 4000 5000
5
3000 100 100 100 100 100

输出

case #0:
0.0000%
case #1:
8.8963%
case #2:
-40.1791%