一 问题描述
一个人拥有x现金 要存y年(y年后取出) 银行有几款不同的期限的月息利率 超出初始存款的钱会给利息(与原题不同 的拓展)
求出利息最多的方案.
月利息 期限
0.63% 一年
0.66% 两年
0.69% 三年
0.75% 五年
0.84% 八年
二 思路设计
每种方案单独设计成函数 返回当时的本金加利息
用穷举法 搭配不同方法达到y年 比较出利息最多的方案
最外层套用期限最长的存法 因为月利息最大
三 流程图
四 代码实现
#include<iostream>
#include<iomanip>
using namespace std;
double way8(double a);
double way5(double a);
double way3(double a);
double way2(double a);
double way1(double a);
int main()
{
int i=0,j=0,k=0,l=0,m=0;
double x,x1; int y; double xm=0; int i2,j2,k2,l2,m2; //最大方案放置区域
cin>>x>>y;//存入多少钱和多少年
for(i=0;i<=y/8;i++)
{
for(j=0;j<=(y-i*8)/5;j++)
{
for(k=0;k<=(y-i*8-j*5)/3;k++)
{
for(l=0;l<=(y-i*8-j*5-k*3)/2;l++)
{
m=y-i*8-j*5-k*3-l*2;
x1=x;
for(int t=0;t<i;t++)
{
x1=way8(x1);
}
for(int t=0;t<j;t++)
{
x1=way5(x1);
}
for(int t=0;t<k;t++)
{
x1=way3(x1);
}
for(int t=0;t<l;t++)
{
x1=way2(x1);
}
for(int t=0;t<m;t++)
{
x1=way1(x1);
}
if(x1>xm)
{
xm=x1;
i2=i;
j2=j;
k2=k;
l2=l;
m2=m;
}
}
}
}
}
cout<<"最佳方案为:"<<endl;
cout<<"八年方案存次数:"<<i2<<endl;
cout<<"五年方案存次数:"<<j2<<endl;
cout<<"三年方案存次数:"<<k2<<endl;
cout<<"两年方案存次数:"<<l2<<endl;
cout<<"一年方案存次数:"<<m2<<endl;
cout<<fixed<<setprecision(2)<<"此时储蓄额为:"<<xm;
return 0;
}
double way8(double a)
{
for(int i=0;i<8;i++)
{
for(int j=0;j<12;j++)
{
a+=a*0.0084;
}
}
return a;
}
double way5(double a)
{
for(int i=0;i<5;i++)
{
for(int j=0;j<12;j++)
{
a+=a*0.0075;
}
}
return a;
}
double way3(double a)
{
for(int i=0;i<3;i++)
{
for(int j=0;j<12;j++)
{
a+=a*0.0069;
}
}
return a;
}
double way2(double a)
{
for(int i=0;i<2;i++)
{
for(int j=0;j<12;j++)
{
a+=a*0.0066;
}
}
return a;
}
double way1(double a)
{
for(int i=0;i<1;i++)
{
for(int j=0;j<12;j++)
{
a+=a*0.0063;
}
}
return a;
}