存钱问题

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

0.63%  期限为1年

0.66%  期限为2年

0.69%  期限为3年

0.75%  期限为5年

0.84%  期限为8年

现在已知某人手上有2000元,要求通过计算选择出一种存钱方案,使得这笔钱存入银行20年后获得的利息最多,假定银行对超出存款期限的那部分时间不付利息。

要使利息最多,必须把存的钱取出来以后再存进去,有五种不同期限的,我们可以通过4个for循环设置条件来进行穷举,并求出最大的获利。

 

#include<iostream>
using namespace std;
#include<cmath>
int main()
{
int x1,x2,x3,x5,x8,y1,y2,y3,y5,y8;
double max=0.0,result;
for(x8=0;x8<=2;x8++)
{
for(x5=0;x5<=(20-8*x8)/5;x5++)
{
for(x3=0;x3<=(20-8*x8-5*x5)/3;x3++)
{
for(x2=0;x2<=(20-8*x8-5*x5-3*x3)/2;x2++)
{
x1=20-8*x8-5*x5-3*x3-2*x2;
result=2000.0*pow((1+0.0063*12),x1)*pow((1+2*0.0066*12),x2)*pow((1+3*0.0069*12),x3)*pow((1+5*0.0075*12),x5)*pow((1+8*0.0084*12),x8);
if(result>max)
{
max=result;
y1=x1;
y2=x2;
y3=x3;
y5=x5;
y8=x8;
}
}
}
}
}
cout<<"获得利息最多的存款方式为:"<<endl;
cout<<"8年期限的存了"<<y8<<"次"<<endl;
cout<<"5年期限的存了"<<y5<<"次"<<endl;
cout<<"3年期限的存了"<<y3<<"次"<<endl;
cout<<"2年期限的存了"<<y2<<"次"<<endl;
cout<<"1年期限的存了"<<y1<<"次"<<endl;
cout<<"存款人最终的获得的本利合计:"<<result<<endl;
return 0;
}

运行结果如下:

 

posted @ 2023-04-21 23:38  为20岁努力  阅读(12)  评论(0编辑  收藏  举报