假设银行整存整取不同期间的月息利率分别为:

1年:0.63%

2年:0.66%

3年:0.69%

5年:0.75%

8年:0.84%

 

现在某人手中有2000元,请通过计算选择一种存钱方案,使得前存入银行20年后得到的本息和最多(假定银行对超过存款期限的部分时间不付利息)

 

 1 class Program
 2 {        
 3     static void Main(string[] args)
 4     {
 5 
 6         string maxExpression = string.Empty;
 7         double maxResult = 0;
 8 
 9         //每年出现的次数
10         int n1 = 0, n2 = 0, n3 = 0, n5 = 0, n8 = 0, n = 0;
11 
12         while (true)    //8年
13         {
14             if (8 * n8 > 20)
15                 break;
16 
17             n5 = 0;
18             while (true)    //5年
19             {
20                 if ((8 * n8 + 5 * n5) > 20)
21                     break;
22 
23                 n3 = 0;
24                 while (true)    //3年
25                 {
26                     if ((8 * n8 + 5 * n5 + 3 * n3) > 20)
27                         break;
28 
29                     n2 = 0;
30                     while (true)    //2年
31                     {
32                         if ((8 * n8 + 5 * n5 + 3 * n3 + 2 * n2) > 20)
33                             break;
34 
35                         n1 = 0;
36                         while (true)    //1年
37                         {
38                             if ((8 * n8 + 5 * n5 + 3 * n3 + 2 * n2 + 1 * n1) > 20)
39                                 break;
40 
41                             if ((8 * n8 + 5 * n5 + 3 * n3 + 2 * n2 + 1 * n1) == 20)
42                             {
43                                 n++;
44                                 Console.WriteLine("存款方式"++ ": 8*" + n8 + " + 5*" + n5 + " + 3*" + n3 + " + 2*" + n2 + " + 1*" + n1);
45                                 double tempResult = 2000 * Math.Pow(1 + 0.0063 * 12, n1) * Math.Pow(1 + 2 * 0.0066 * 12, n2) * Math.Pow(1 + 3 * 0.0069 * 12, n3) * Math.Pow(1 + 5 * 0.0075 * 12, n5) * Math.Pow(1 + 8 * 0.0084 * 12, n8);
46                                 if (tempResult > maxResult)
47                                 {
48                                     maxResult = tempResult;
49                                     maxExpression = n + ": 8*" + n8 + " + 5*" + n5 + " + 3*" + n3 + " + 2*" + n2 + " + 1*" + n1;
50                                 }
51                             }
52 
53                             n1++;
54                         }
55 
56                         n2++;
57                     }
58 
59                     n3++;
60                 }
61 
62                 n5++;
63             }
64 
65             n8++;
66         }
67 
68         Console.WriteLine();
69         Console.WriteLine("-----------------------------");
70         Console.WriteLine("最大存钱利率所得:" + maxResult + "\n存款方式" + maxExpression);
71         Console.WriteLine();
72     }
73 }

 

 

posted on 2010-04-28 15:27  林博然  阅读(474)  评论(0编辑  收藏  举报