0
0

More than 1 year has passed since last update.

【Project Euler】Problem 8: 数列の中の最大積

Posted at
  • 本記事はProjectEulerの「100番以下の問題の説明は記載可能」という規定に基づいて回答のヒントが書かれていますので、自分である程度考えてみてから読まれることをお勧めします。

問題 8. 数列の中の最大積

原文 Problem 8: Largest product in a series

問題の要約:1000桁の数列の中の13桁の各桁の積の最大値を求めよ

Pythonのように文字列の長さに制限がないとかなり簡単に書けますね。文字列$s$は長いので下の方に載せました。

import numpy as np
L = 13
mprod = [0,0,0]
for i in range(len(s)-L):
  s1 = s[i:i+L]                                  # cut sub-string
  p1 = np.array(list(map(int,list(s1)))).prod()  # product
  if p1 > mprod[-1]:
    mprod = [i, s1, p1]  # [position, string, product]
print(f"Answer : {mprod}")
s = '73167176531330624919225119674426574742355349194934'\
'96983520312774506326239578318016984801869478851843'\
'85861560789112949495459501737958331952853208805511'\
'12540698747158523863050715693290963295227443043557'\
'66896648950445244523161731856403098711121722383113'\
'62229893423380308135336276614282806444486645238749'\
'30358907296290491560440772390713810515859307960866'\
'70172427121883998797908792274921901699720888093776'\
'65727333001053367881220235421809751254540594752243'\
'52584907711670556013604839586446706324415722155397'\
'53697817977846174064955149290862569321978468622482'\
'83972241375657056057490261407972968652414535100474'\
'82166370484403199890008895243450658541227588666881'\
'16427171479924442928230863465674813919123162824586'\
'17866458359124566529476545682848912883142607690042'\
'24219022671055626321111109370544217506941658960408'\
'07198403850962455444362981230987879927244284909188'\
'84580156166097919133875499200524063689912560717606'\
'05886116467109405077541002256983155200055935729725'\
'71636269561882670428252483600823257530420752963450'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0