怎样存钱利最大

假设银行整存整取不同期限的月息利率分别为:

0.63%  期限=1年

0.66%  期限=2年

0.69%  期限=3年

0.75%  期限=5年

0.83%  期限=8年

利息=本金*月息利率*12*存款年限。

现在某人手中有2000元,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那部分时间不付利息)。

分析:

为了得到最多的利息,存入银行的钱应在到期时马上就取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样本利不断地滚动直到满20年为止。由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息也是不一样的。

设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得的本利合计为;

2000* (1+rate1)^i1 * (1+rate2)^i2 * (1+rate3)^i3 * (1+rate5)^i5 * (1+rate8)^i8    (其中rateN为对应存款年限的利率)

根据题意限制条件为:

0<=i8<=2

0<=i5<=(20 - 8*i8) / 5

0<=i3<=(20 - 8*i8 - 5*i5) / 3

0<=i2<=(20 - 8*i8 - 5*i5 - 3*i3) / 2

0<=i1<=20 - 8*i8 - 5*i5 - 3*i3 - 2*i2

可以采用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。


源码:

#include<iostream.h>
#include<math.h>

void main()
{
	int i1,i2,i3,i5,i8,n1,n2,n3,n5,n8;
	double sum=0,temp;
	for(i8=0;i8<3;i8++)
		for(i5=0;i5<=(20-8*i8)/5;i5++)
			for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
				for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
				{
					i1=20-8*i8-5*i5-3*i3-2*i2;
					temp=2000*pow((double)(1+1*0.0063*12),(double)i1)
						     *pow((double)(1+2*0.0066*12),(double)i2)
							 *pow((double)(1+3*0.0069*12),(double)i3)
							 *pow((double)(1+5*0.0075*12),(double)i5)
							 *pow((double)(1+8*0.0084*12),(double)i8);
					if(temp>sum)
					{
						sum=temp;
						n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;
					}
				}
	cout<<"one   year is "<<n1<<endl;
	cout<<"two   year is "<<n2<<endl;
	cout<<"three year is "<<n3<<endl;
	cout<<"five  year is "<<n5<<endl;
	cout<<"eight year is "<<n8<<endl;
	cout<<"the sum money is: "<<sum<<endl;
}

效果:



  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值