时间限制: 1Sec 内存限制: 128MB
题目描述
银行近期推出了一款新的理财计划“重复计息储蓄”。储户只需在每个月月初存入固定金额的现金,银行就会在每个月月底根据储户账户内的金额算出该月的利息并将利息存入用户账号。现在如果某人每月存入k元,请你帮他计算一下,n月后,他可以获得多少收益。
输入
输入数据仅一行,包括两个整数k(100< =k< =10000)、n(1< =n< =48)和一个小数p(0.001< =p< =0.01),分别表示每月存入的金额、存款时长、存款利息。
输出
输出数据仅一个数,表示可以得到的收益。
样例输入
1000 6 0.01
样例输出
213.53
#include<stdio.h>
int main()
{
int n,money,i;
double newmoney=0.0,p,len;
scanf("%d %d %lf",&money,&n,&p);
len=money;
for(i=0;i<n;i++)
{
newmoney+=money;
newmoney*=(1+p);
}
newmoney=newmoney-n*len;
newmoney=(int)(newmoney*100)/100.0;//防止四舍五入
printf("%.2f\n",newmoney);
return 0;
}
1.在实际问题中,如果利用输出函数来规定输出的小数位数,很可能会因为四舍五入而得不到正确结果,这是可以用这种方法来解决四舍五入
a=(int)(a*100)/100.0; //防止四舍五入
printf("%.2f\n",a);
1.在解决此类实数问题最好用double类型