银行利息

GitHub跳转原题关系图返回列表

按复利公式计算最终金额,再用 int 截去小数部分。

OJ: noi_openjudge

题目 ID: ch0105-15

难度:入门

标签:数学浮点数python

日期: 2026-07-30 23:01

题意

本金按年利率 RR 复利投资 YY 年,输出最终金额的整数部分。

思路

每年增长因子为 1+R/1001+R/100,最终金额是 M(1+R/100)YM(1+R/100)^Y。题目要整数部分,Python 的 int 对正数直接截去小数部分。

代码

Python代码

python
rate, principal, years = map(int, input().split())
final_amount = principal * (1 + rate / 100) ** years
print(int(final_amount))

C++代码

cpp
#include <cstdio>

int main(){
    int r,m,y;
    scanf("%d%d%d",&r,&m,&y);
    double lilv = 1+ r*0.01;
    double result = m;
    int i;
    for (i=1;i<=y;i++){
        result = result*lilv;
    }
    printf("%d\n",(int)result);
    return 0;
}

复杂度

使用内建幂运算,额外空间复杂度为 O(1)O(1)

总结

复利与单利不同,每一年都作用在上一年的本息和上,因此要使用乘方。