Problem #37
Tags:
finance
mathematics
practical
c-1
c-0
implementation
银行业务为我们提供了许多有趣的编程问题,与你之前学习的储蓄计算器相比,下面这一个更为复杂。
Joel 在购买了一艘船后又有了一个新的想法 - 再买个房子。由于他不想等到凑够全款的时候再购买,因此他想到了抵押,从用来从银行贷款立即买下这个房子,同时贷款时使用这个房子作为担保(即,在借款人违约的情况下,银行获得房屋作为补偿金)。
在数学上,抵押按以下算法工作:
Joel 从银行借了大笔款项 P
(并进行了购买房屋操作)
银行告诉他贷款利率为百分比 R - 也就是债务增长的速度;
每个月末债务都会增长 R / 12
%.
紧接着,在 Joel 将一些预定义的小额 M
存入银行以减少债务之后;
当债务减为零(这可能需要数年)时,便视为已清偿债务。
举个栗子,Joel 以 R = 6%
的利率从银行借了 P = $800,000
,他在每个月末原因支出 M = $10000
。
Month P P * (R/12)% -M new P
1 $800000 $4000 -$10000 $794000
2 $794000 $3970 -$10000 $787970
3 $787970 $3940 -$10000 $781910
...
12 $732325 $3662 -$10000 $725987
...
24 $654138 $3271 -$10000 $647408
...
103 $4188 $21 -$4209 $0
那么在 103 个月
(也就是8.5年
)后债务可以还清。当然,最后一次付款可能少于M(因为P不能变为负数)。注意,他将支付:
102 * $10000 + $4209 = 1024209
比房屋成本高 25%
。
Joel 现在要请你这个牛逼的程序员帮助他计算一下每月要还的债务 M
。
输入数据 包含贷款规模 P
,利率 R
和还款时间 L
(以月为单位)的值。
答案 应包含所需的每月付款 M
,并四舍五入为整数(即,如果你获得非整数结果,则将其增加到更大的整数)。
例如:
input data:
800000 6 103
answer:
9957