存钱问题

 

一、问题描述

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

0.63%  期限为1年

0.66%  期限为2年

0.69%  期限为3年

0.75%  期限为5年

0.84%  期限为8年

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

二、设计思路

    设这20年中1年期限存了x1次,2年期限存了x2次,3年期限存了x3次,5年期限存了x5次,

8年期限存了x8次,得到的本金和利息为:

      2000*(1+0.063)x1*(1+0,066)x2*(1+0.069)x3*(1+0.075)x5*(1+0.084)x8

      条件限制为

      0<=x8<=2

      0<=x5<=(20-8*x8)/5

      0<=x3<=(20-8*x8-5*x5)/3

      0<=x2<=(20-8*x8-5*x5-3*x3)/2

      x1=20-8*x8-5*x5-3*x3-2*x2  x1>=0


三、流程图

 

    

四、伪代码

头文件

0.63%  期限为1年

0.66%  期限为2年

0.69%  期限为3年

0.75%  期限为5年

0.84%  期限为8年

算出结果,列出所有的可能的组合比较大小

输出最优结果

五、代码实现

#include<iostream>

#include<cmath>

using namespace std;

int main()

{

       int x1,x2,x3,x5,x8,y1,y2,y3,y5,y8;

       double sum,max=0.0;

       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;

                                   sum=2000*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(sum>max)

                                   {

                                          max=sum;

                                          y1=x1;

                                          y2=x2;

                                          y3=x3;

                                          y5=x5;

                                          y8=x8;

                                   }

 

                            }

                     }

              }

       }

       cout<<"期限为1年存了"<<y1<<"年"<<endl;

       cout<<"期限为2年存了"<<y2<<"年"<<endl;

       cout<<"期限为3年存了"<<y3<<"年"<<endl;

       cout<<"期限为5年存了"<<y5<<"年"<<endl;

       cout<<"期限为8年存了"<<y8<<"年"<<endl;

       cout<<"最终获得的本利合计"<<sum;

}

六,补充

pow函数的使用

函数原型double pow(double x,double y)

计算xy的值

为数学函数头文件加上#include<math.h>

posted @ 2023-04-24 13:54  八千里路云和月色  阅读(51)  评论(0)    收藏  举报