• projecteuler Problem 8 Largest product in a series


    The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.

    73167176531330624919225119674426574742355349194934
    96983520312774506326239578318016984801869478851843
    85861560789112949495459501737958331952853208805511
    12540698747158523863050715693290963295227443043557
    66896648950445244523161731856403098711121722383113
    62229893423380308135336276614282806444486645238749
    30358907296290491560440772390713810515859307960866
    70172427121883998797908792274921901699720888093776
    65727333001053367881220235421809751254540594752243
    52584907711670556013604839586446706324415722155397
    53697817977846174064955149290862569321978468622482
    83972241375657056057490261407972968652414535100474
    82166370484403199890008895243450658541227588666881
    16427171479924442928230863465674813919123162824586
    17866458359124566529476545682848912883142607690042
    24219022671055626321111109370544217506941658960408
    07198403850962455444362981230987879927244284909188
    84580156166097919133875499200524063689912560717606
    05886116467109405077541002256983155200055935729725
    71636269561882670428252483600823257530420752963450

    Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

    譯文:

    觀察著1000個數字,通過運算可得,最大的連續的四位數的乘機為5832,求出最大的連續的13位數的乘機?

    =============================

    第一次code:

     1 import java.util.ArrayList;
     2 import java.util.List;
     3 
     4 public class Main
     5 {
     6     public static void main(String[] args)   
     7     {
     8         System.out.println(num(run()));
     9     }
    10     /*
    11     *  將1000個數放到一個字符串
    12     *  將字符串轉換成字符串數組
    13     *  計算每連續的13位數的乘機,並放置在Arraylist數組中
    14     *
    15     *  注意:乘機的類型為long,如果為int的話,數據結果會超出,導致計算結果出錯
    16     */
    17     public static List run()
    18     {
    19         String a="73167176531330624919225119674426574742355349194934"
    20                 +"96983520312774506326239578318016984801869478851843"
    21                 +"85861560789112949495459501737958331952853208805511"
    22                 +"12540698747158523863050715693290963295227443043557"
    23                 +"66896648950445244523161731856403098711121722383113"
    24                 +"62229893423380308135336276614282806444486645238749"
    25                 +"30358907296290491560440772390713810515859307960866"
    26                 +"70172427121883998797908792274921901699720888093776"
    27                 +"65727333001053367881220235421809751254540594752243"
    28                 +"52584907711670556013604839586446706324415722155397"
    29                 +"53697817977846174064955149290862569321978468622482"
    30                 +"83972241375657056057490261407972968652414535100474"
    31                 +"82166370484403199890008895243450658541227588666881"
    32                 +"16427171479924442928230863465674813919123162824586"
    33                 +"17866458359124566529476545682848912883142607690042"
    34                 +"24219022671055626321111109370544217506941658960408"
    35                 +"07198403850962455444362981230987879927244284909188"
    36                 +"84580156166097919133875499200524063689912560717606"
    37                 +"05886116467109405077541002256983155200055935729725"
    38                 +"71636269561882670428252483600823257530420752963450";
    39         char [] b = a.toCharArray();
    40         List<Long>list = new ArrayList<Long>();
    41         for(int i=0;i<b.length-13;i++)
    42         {
    43             list.add(Long.valueOf(String.valueOf(b[i]))*Long.valueOf(String.valueOf(b[i+1]))
    44                     *Long.valueOf(String.valueOf(b[i+2]))*Long.valueOf(String.valueOf(b[i+3]))
    45                     *Long.valueOf(String.valueOf(b[i+4]))*Long.valueOf(String.valueOf(b[i+5]))
    46                     *Long.valueOf(String.valueOf(b[i+6]))*Long.valueOf(String.valueOf(b[i+7]))
    47                     *Long.valueOf(String.valueOf(b[i+8]))*Long.valueOf(String.valueOf(b[i+9]))
    48                     *Long.valueOf(String.valueOf(b[i+10]))*Long.valueOf(String.valueOf(b[i+11]))
    49                     *Long.valueOf(String.valueOf(b[i+12])));
    50         }
    51         return list;
    52     }
    53     /*
    54     *  遍歷ArrayList數組
    55     *  比較輸出最大值
    56     */
    57     public static long num(List list)
    58     {
    59         long max=(Long)list.get(0);
    60         for(int i=0;i<list.size();i++)
    61         {
    62             if(max < (Long)list.get(i))
    63             {
    64                 max = (Long)list.get(i);
    65             }
    66         }
    67         return max;
    68     }
    69 }

    Answer : 23514624000

    時間效率: 5 毫秒。

  • 相关阅读:
    VisualSVN Server 和 Subversion (都是服务器端安装)
    pl/sql导出dmp格式数据时,命令行一闪而退的问题
    Linux各种时间类型与时间函数提供技术文档
    erlang tuple的一些操作
    erlang 题目:一个integer列表,按照数字出现的次数由少到多排序,相同的数字小 的在前面
    一些erlang 题目
    各种排序
    erlang gen_tcp 详细例子
    erlang receive语句大诠释
    ets结合record的增删改查操作
  • 原文地址:https://www.cnblogs.com/niithub/p/5809536.html
Copyright © 2020-2023  润新知