假设银行整存整取不同期间的月息利率分别为:
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("存款方式"+n + ": 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 }
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("存款方式"+n + ": 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 }