题目
银行近期推出了一款新的理财计划“重复计息储蓄”。储户只需在每个月月初存入固定金额的现金,银行就会在每个月月底根据储户账户内的金额算出该月的利息并将利息存入用户账号。现在如果某人每月存入k元,请你帮他计算一下,n月后,他可以获得多少收益。
输入
输入数据仅一行,包括两个整数k(100< =k< =10000)、n(1< =n< =48)和一个小数p(0.001< =p< =0.01),分别表示每月存入的金额、存款时长、存款利息。
输出
输出数据仅一个数,表示可以得到的收益。
样例输入
1000 6 0.01
样例输出
213.53
解题思路
利用for循环,计算每一个月的利息并累加,同时,不断更新每个月的本金数值(包括用户新存入的部分和上个月得到的利息),最后输出总获利即可。
易错点
- 注意该题的特殊之处在于,每个月的月初用户都存入X元,且上月结算的利息也会被存入当作为本金;
- 计算后发现,样例给出的含义是不需要四舍五入且保留两位小数,因此,不能直接%.2lf输出,而是需要先将double类型的计算结果进行如下运算:
(int) A*100/100.0
。
代码
#include<stdio.h>
int main()
{
int k,n,i;
double bj;//bj为该月的本金
double p,profit = 0;
scanf("%d %d %lf",&k,&n,&p);//k为用户每个月存入的利息
bj = k;
for (i=0;i<n;i++)
{
profit+=bj*p;//本月利息
bj+=(k+bj*p);
}
printf("%.2lf",(int)(profit*100)/100.0);
return 0;
}