题目: 某人手中有2000元钱,通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行 。
假设银行整存整取存款不同期限的月息利率分别为:
0.63% 期限=1年
0.66% 期限=2年
0.69% 期限=3年
0.75% 期限=5年
0.84% 期限=8年
利息=本金*月息利率*12*存款年限。
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
int a1,a2,a3,a4,a5,n1,n2,n3,n4,n5;
float maxm=0,tem;
for (a5=0;a5<3;a5++)
for(a4=0;a4<(20-a5*8)/5;a4++)
for(a3=0;a3<(20-a5*8-a4*5)/3;a3++)
for(a2=0;a2<(20-a5*8-a4*5-a3*3)/2;a2++)
{
a1=20-a5*8-a4*5-a3*3-a2*2;
tem=2000*pow((double)(1+0.0084*12),(double)(a5*8))*pow((double)(1+0.0075*12),(double)(a4*5))*pow((double)(1+0.0069*12),(double)(a3*3))*pow((double)(1+0.0066*12),(double)(a2*2))*pow((double)(1+0.0063*12),(double)(a1));
if (tem>maxm)
{
maxm=tem;
n1=a1;
n2=a2;
n3=a3;
n4=a4;
n5=a5;
}
}
cout<<"存钱最大20年后为:"<<maxm<<endl;
cout<<"存钱方案如下:"<<endl;
cout<<"存1年限的次数为:"<<n1<<endl;
cout<<"存2年限的次数为:"<<n2<<endl;
cout<<"存3年限的次数为:"<<n3<<endl;
cout<<"存5年限的次数为:"<<n4<<endl;
cout<<"存8年限的次数为:"<<n5<<endl;
return 0;
}