24小时热门版块排行榜    

查看: 617  |  回复: 2
本帖产生 1 个 程序强帖 ,点击这里进行查看

holmescn

金虫 (正式写手)

[交流] Euler 工程 第八题:在1000个数字中找到出5个连着的乘积最大的数已有1人参与

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


上面是1000个数字,在其中找出5个数,这5个数的积要最大。
比如前5个数是73167,7*3*1*6*7= 882。然后找这样的积中最大的。
这1000个数是一个大长串啊!其实也好找,是吧。

PS:看着这堆数就晕啊!

[ Last edited by holmescn on 2011-5-14 at 18:20 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

holmescn

金虫 (正式写手)

★ ★
微尘、梦想(金币+2, 程序强帖+1): 鼓励参与! 2011-05-14 19:53:41
我先来一个解法,Fortran 90版
CODE:
Program euler7
    Implicit None
    Integer, Parameter :: N = 1000
    Integer :: Digit(N), MaxDigits(5)
    Integer :: I, Prod = 0,  MaxProd = 0
    Integer :: Idx = 0
    Real    :: StartTime, EndTime

    Call CPU_Time(StartTime)

    Open(100, File = "1000-digits.txt")

    Do I = 1, 20
        Read(100, '(1000I1)') Digit((I-1)*50+1:I*50)
    EndDo
    Close(100)

    Do I = 1, N - 5
        Prod = Product(Digit(I:I+4))
        If(Prod > MaxProd) Then
            MaxProd = Prod
            MaxDigits = Digit(I:I+4)
            Idx = I
        EndIf
    EndDo

    Print '(''Index = '', I4)', Idx
    Print '(''MaxDigits ='', 5I2)', MaxDigits
    Print '(''MaxProd ='', I6)', MaxProd
    Call CPU_Time(EndTime)
    Print *, EndTime-StartTime

End Program euler7

从第365个数开始的5个数,9 9 8 7 9, 乘积为40824最大!
2楼2011-05-14 18:42:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+3): 谢谢参与,欢迎常来! 2011-05-26 15:45:21
本帖仅楼主可见
3楼2011-05-26 10:24:51
已阅   申请程序强帖   回复此楼   编辑   查看我的主页
相关版块跳转 我要订阅楼主 holmescn 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见