Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找数字序列中最大的n位数乘积_Python_Arrays_List_Numpy - Fatal编程技术网

Python 查找数字序列中最大的n位数乘积

Python 查找数字序列中最大的n位数乘积,python,arrays,list,numpy,Python,Arrays,List,Numpy,其目的是在长度>n的数字范围内找到n位数字,乘积最高。 例如,在下面的1000位数字中,找到其乘积最大的13位数字序列 import numpy as np n = 13 # for visual readibility the number is truncated in this example x = '''73167176531330624919225117...2483600823257530420752963450''' #make a list of all possible t

其目的是在长度>n的数字范围内找到n位数字,乘积最高。 例如,在下面的1000位数字中,找到其乘积最大的13位数字序列

import numpy as np
n = 13
# for visual readibility the number is truncated in this example
x = '''73167176531330624919225117...2483600823257530420752963450'''

#make a list of all possible thirteen adjacent digits with no 0    
y = [x[i:i+n] for i in range(len(x)) if '0' not in x[i:i+n] and i+n < len(x)]

#convert to int and multiply     
y3d = [np.array(list(y[i]), dtype=int) for i in range(len(y))]     
multiplied = [np.prod(y3d[i]) for i in range(len(y3d))]

print(max(multiplied))
将numpy导入为np
n=13
#为了视觉可读性,本例中数字被截断
x=''73167176531330624919225117…248360823257530420752963450''
#列出所有可能的十三个相邻数字,不带0
如果“0”不在x[i:i+n]中且i+n
数字=

731671765313306249192251197442657474235534919493496983520312774506323257318016984801869478851843858615607891129495459501737958331952853208805111254069987471523830507156932909632952274304353576666666648950445231736403098711121723113622989342338033766152828282828280646445838383838383838353537373767676766152528282828282828282806445749390729072904925907713807190707070793535359195959545454545909090909090909090796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111093705544217506941658960408071984038509245544436298123098787992724428490918884580156660979133875420052406368991256071760605861164109405074100225691552000559357729725716362695618826708252483600823753042029450


它在1到12个数字上工作,但我在13个数字上有点困难

欢迎来到SO@Gelar Anugerah

我不确定您的代码是否适用于4位数字

问题是变量“multy”没有定义,您应该将其替换为

    print(max(multiplied))
然后,您应该获得
max
值的索引,并按正确的顺序打印:

    j = multiplied.index(max(multiplied))
    print(y3d[j])

试图在1000位数字中找到13个相邻的数字,它们的乘积最大。是的,我在multy变量中犯了一个错误,我还应该将13改为变量n,其中n是相邻数字的数目。我做到了,它在4位数字上确实有效。我想我应该在这里找到我的解决方案,因为我在您上次的y3d打印中也得到了结果2091059712,您总是打印数组的最后一个单元格,更新的响应也解决了这个问题。y3d打印只是检查代码是否创建列表,直到最后一个可能的组合(应该添加注释)。我想我的问题是因为一个整数溢出。因为正确答案高于溢出范围