所以我现在正试图做一些Project Euler问题。我目前正在question 8,我正在使用python来解决它。
我制作了一些代码并得到了答案,结果证明不正确。我不确定我的代码有什么问题,所以如果有人能告诉我问题是什么,我将不胜感激。我得到了56435097600的答案,这是13号码在第30列上相乘,偏移量为6,所以它开始7894 ......这是我的代码,它不是很有效或整洁,但我只是想知道问题是什么,而不是改变我的代码,使其更整洁/更有效。
rows = ['73167176531330624919225119674426574742355349194934','96983520312774506326239578318016984801869478851843','85861560789112949495459501737958331952853208805511',
'12540698747158523863050715693290963295227443043557','66896648950445244523161731856403098711121722383113','62229893423380308135336276614282806444486645238749',
'30358907296290491560440772390713810515859307960866','70172427121883998797908792274921901699720888093776','65727333001053367881220235421809751254540594752243',
'52584907711670556013604839586446706324415722155397','53697817977846174064955149290862569321978468622482','83972241375657056057490261407972968652414535100474',
'82166370484403199890008895243450658541227588666881','16427171479924442928230863465674813919123162824586','17866458359124566529476545682848912883142607690042',
'24219022671055626321111109370544217506941658960408','07198403850962455444362981230987879927244284909188','84580156166097919133875499200524063689912560717606',
'05886116467109405077541002256983155200055935729725','71636269561882670428252483600823257530420752963450',]
columns = []
def createcolumns():
global rows,columns
for x in range(0,50):
tempvalue = ''
for j in range(0,20):
tempvalue = tempvalue + rows[j][x]
columns.append(tempvalue)
def multiply(string):
tempvalue = 1
for letters in string:
tempvalue *= int(letters)
return tempvalue
def highestnumber():
global rows,columns
highest = 0
# 37 ways per row * 20 + 7 ways per collum * 50
for x in range(0,20):
for g in range(0,37):
tempvalue = ''
for j in range(0,13):
tempvalue = tempvalue + rows[x][j+g]
tempvalue = multiply(tempvalue)
if(tempvalue > highest):
highest = tempvalue
for x in range(0,50):
for g in range(0,7):
tempvalue = ''
for j in range(0,13):
tempvalue = tempvalue + columns[x][j+g]
tempvalue = multiply(tempvalue)
if(tempvalue > highest):
highest = tempvalue
return highest
createcolumns()
print(highestnumber())
输出:
>> 56435097600
答案 0 :(得分:0)
嗯,目的是自己解决这个问题
但是,我想指出你对这个问题的理解中的缺陷,你可以从那里接受
这个问题谈到了一个" 1000位"号。
这意味着,所有20行50个数字需要合并为1个单个数字的1000个数字
为了良好的可见性,它以矩阵形式给出
因此,使用行X列来解决此问题可能无济于事
你的逻辑适用于4位数字,因为它全部在1行
而且由于你的逻辑没有输入13位数字,我的猜测是13位数不会落入1个单行。
如果我没错。