zoukankan      html  css  js  c++  java
  • 100C之14:如何获得最大投资利益

    Table of Contents

    问题

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

    年份月利率
    1 0.63%
    2 0.66%
    3 0.69%
    5 0.75%
    8 0.84%

    利息 = 本金X月息利率X12X存款年限. 假定银行对超过存款期限的那部分时间不服利息. 现在某人手中有2000元,计算一种方案,使得钱存入银行20年后得到最多利息。

    分析

    假设该人一年期的存款存$n1$次,二年期的存款存$n2$次,三年期的存款存$n3$次,五年期的存款存$n5$次,八年期的存款存$n8$次,则最后的总收入为

    \begin{eqnarray} y&=&2000(1 + 0.0062\times 12)^{n_{1}}(1 + 0.0066\times 12\times 2)^{n_{2}}(1 + 0.0069\times 12\times 3)^{n_{3}} \nonumber \\ & &\times(1 + 0.0075\times 12\times 5)^{n_{5}}(1 + 0.0084\times 12\times 8)^{n_{8}} \end{eqnarray}

    其中$n1$,$n2$,$n3$,$n5$,$n8$满足约束如下约束关系

    \begin{equation} 0\le n_{1} \le 20 \end{equation} \begin{equation} 0\le n_{2} \le (20 - n_{1})/2 \end{equation} \begin{equation} 0\le n_{3} \le (20 -n_{1}-2n_{2})/3 \end{equation} \begin{equation} 0\le n_{5} \le (20-n_{1}-2n_{2}-3n_{3})/5 \end{equation} \begin{equation} 0\le n_{8} \le (20-n_{1}-2n_{2}-3n_{3}-5n_{5})/8 \end{equation}

    综上分析穷举计算出最大值即可

    解决方案

     1:  /**
     2:   * @file   014getmaximumprofit.c
     3:   * @author Chaolong Zhang <emacsun@163.com>
     4:   * @date   Tue May 14 18:22:20 2013
     5:   * 
     6:   * @brief  假设银行整存整取不同期限的月利息为
     7:   *         1年       0.63%
     8:   *         2年       0.66%
     9:   *         3年       0.69%
    10:   *         5年       0.75%
    11:   *         8年       0.84%
    12:   *   利息 = 本金X月息利率X12X存款年限 
    13:   *   现在某人手中有2000元,计算一种方案,使得钱存入银行20年后得到最多利息。
    14:   *   假定银行对超过存款期限的那部分时间不服利息
    15:   */
    16:  
    17:  #include <stdio.h>
    18:  #include <math.h>
    19:  
    20:  
    21:  int main(int argc, char *argv[])
    22:  {
    23:      int n1,n2,n3,n5,n8;
    24:      int m1,m2,m3,m5,m8;
    25:      float total=0;
    26:      float maximum=0;
    27:      for ( n1 = 0; n1 <= 20; ++n1)
    28:      {
    29:          for ( n2 = 0; n2 <= ( 20-n1 )/2; ++n2)
    30:          {
    31:              for ( n3 = 0; n3 <= ( 20-n1-2*n2 )/3 ; ++n3)
    32:              {
    33:                  for ( n5 = 0; n5 <= ( 20-n1-2*n2-3*n3 )/5; ++n5)
    34:                  {
    35:                      for ( n8 = 0; n8 <= ( 20-n1-2*n2-3*n3-5*n5 )/8; ++n8)
    36:                      {
    37:                          total = 2000*pow( 1+0.0063*12 , n1)*pow( 1+0.0066*12*2 , n2)*pow( 1+0.0069*12*3 , n3)
    38:                                  *pow( 1+0.0075*12*5 , n5)*pow( 1+0.0084*12*8 , n8);
    39:                          if (total>maximum)
    40:                          {
    41:                              maximum=total; 
    42:                              m1=n1;
    43:                              m2=n2;
    44:                              m3=m3;
    45:                              m5=n5;
    46:                              m8=n8;
    47:                          }
    48:                      }
    49:                  }
    50:              }
    51:          }
    52:      }
    53:      printf ("the total money is %f, with 1-year %d times\n with 2-year %d times\n with 3-year %d times\n
    54:                with 5-year %d times\n with 8-year %d times\n", maximum, m1,m2,m3,m5,m8);
    55:      return 0;
    56:  }
    
  • 相关阅读:
    bzoj 1071: [SCOI2007]组队
    bzoj 4872: [Shoi2017]分手是祝愿
    (python)循环中动态产生变量
    Python中的exec、eval的区别
    MATLAB中feval与eval的区别
    用intellij idea 写第一个Java程序
    Python词云的中文问题
    python里的apply,applymap和map的区别
    Python 正则表达式匹配小数
    字典的深拷贝与浅拷贝
  • 原文地址:https://www.cnblogs.com/chaolong/p/3078343.html
Copyright © 2011-2022 走看看