原题:

/*
 * 原题:
 *  Find the greatest product of five consecutive digits in the 1000-digit number.
 * 73167176531330624919225119674426574742355349194934
 * 96983520312774506326239578318016984801869478851843
 * 85861560789112949495459501737958331952853208805511
 * 12540698747158523863050715693290963295227443043557
 * 66896648950445244523161731856403098711121722383113
 * 62229893423380308135336276614282806444486645238749
 * 30358907296290491560440772390713810515859307960866
 * 70172427121883998797908792274921901699720888093776
 * 65727333001053367881220235421809751254540594752243
 * 52584907711670556013604839586446706324415722155397
 * 53697817977846174064955149290862569321978468622482
 * 83972241375657056057490261407972968652414535100474
 * 82166370484403199890008895243450658541227588666881
 * 16427171479924442928230863465674813919123162824586
 * 17866458359124566529476545682848912883142607690042
 * 24219022671055626321111109370544217506941658960408
 * 07198403850962455444362981230987879927244284909188
 * 84580156166097919133875499200524063689912560717606
 * 05886116467109405077541002256983155200055935729725
 * 71636269561882670428252483600823257530420752963450
 */

翻译:

/*
 * 翻译:
 *  寻找到连着5个数字的乘积最大的数。
 */

解题思路:

 

1 /// <summary>   
2 /// 解题思路:   
3 ///     没啥很特别的思路,唯一的思路也就是巍彼同学说的,以0作为分割,分割成几个不同长度的字符串。然后求解。   
4 /// </summary>  

 

代码:

 

代码
 1 using System;   
 2   
 3 class FiveConsecutiveDigitsInThe1000_DigitNumber   
 4 {   
 5     internal static int GetResult()   
 6     {   
 7         //char ch = '1';   
 8         //Console.WriteLine((ch - 48).ToString());   
 9   
10         string strNum = "73167176531330624919225119674426574742355349194934" +   
11                 "96983520312774506326239578318016984801869478851843" +   
12                 "85861560789112949495459501737958331952853208805511" +   
13                 "12540698747158523863050715693290963295227443043557" +   
14                 "66896648950445244523161731856403098711121722383113" +   
15                 "62229893423380308135336276614282806444486645238749" +   
16                 "30358907296290491560440772390713810515859307960866" +   
17                 "70172427121883998797908792274921901699720888093776" +   
18                 "65727333001053367881220235421809751254540594752243" +   
19                 "52584907711670556013604839586446706324415722155397" +   
20                 "53697817977846174064955149290862569321978468622482" +   
21                 "83972241375657056057490261407972968652414535100474" +   
22                 "82166370484403199890008895243450658541227588666881" +   
23                 "16427171479924442928230863465674813919123162824586" +   
24                 "17866458359124566529476545682848912883142607690042" +   
25                 "24219022671055626321111109370544217506941658960408" +   
26                 "07198403850962455444362981230987879927244284909188" +   
27                 "84580156166097919133875499200524063689912560717606" +   
28                 "05886116467109405077541002256983155200055935729725" +   
29                 "71636269561882670428252483600823257530420752963450"// 给定的数字列   
30   
31         string[] Strs = strNum.Split('0');   
32         int Biggest = 0;   
33         int product = 0;   
34         for (int j = 0; j < Strs.Length; j++)   
35         {   
36             string strtmp = Strs[j];   
37             for (int i = 0; i <= strtmp.Length - 5; i++)   
38             {   
39                 product = (strtmp[i] - 48* (strtmp[i + 1- 48* (strtmp[i + 2- 48* (strtmp[i + 3- 48* (strtmp[i + 4- 48);   
40                 if (product > Biggest)   
41                     Biggest = product;   
42             }   
43         }   
44         Console.WriteLine(Biggest.ToString());   
45     }   
46 }  

 

 

posted on 2010-05-18 10:36  干田  阅读(163)  评论(0编辑  收藏  举报