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