程序设计能力实训

1109. 计算内部回报率

单点时限: 2.0 sec

内存限制: 256 MB

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

在项目产生利润之前需要先投入建设资金(假设称为 $c_0$),建成后每年产生的利润(假设称为 $c_1, c_2 \ldots$)。内部回报率(记为 $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$ 只有唯一解。

输入格式

第 $1$ 行:整数 $T$ ($1 \le T \le 10$) 为问题数。

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

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

输出格式

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

样例

Input
3
2
200 100 100
3
10000 3000 4000 5000
5
3000 100 100 100 100 100
Output
case #0:
0.0000%
case #1:
8.8963%
case #2:
-40.1791%
不限期开放

题目列表