使用python的project euler#4最大回文

使用python的project euler#4最大回文,python,palindrome,Python,Palindrome,谁能告诉我上面这个问题出了什么问题吗。我没有得到最后的答案 Q) 回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文是9009=91×99 从两个3位数字的乘积中找出最大的回文。我认为您误解了我在代码中看到的问题。 问题: 回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文是9009=91×99。 所以在这个例子中,回文是9009,因为当你向前和向后阅读它时,它仍然是9009。 问题是找到两个3位数的数字,当它们相乘时,会得到最大的回文数 因为最大的回文可能是913x993=

谁能告诉我上面这个问题出了什么问题吗。我没有得到最后的答案

Q) 回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文是9009=91×99


从两个3位数字的乘积中找出最大的回文。

我认为您误解了我在代码中看到的问题。 问题: 回文数字的两种读取方式相同。由两个两位数的乘积构成的最大回文是9009=91×99。 所以在这个例子中,回文是9009,因为当你向前和向后阅读它时,它仍然是9009。 问题是找到两个3位数的数字,当它们相乘时,会得到最大的回文数

因为最大的回文可能是913x993=906609

因此,您的代码将简化为这样

product=1
ans=[]
for i in range(100,999):
    for j in range(100,999):
        product=i*j
        temp=product
        while(product>0):
            rev=1
            dig=product%10
            rev=rev*10+dig
            product=product//10
        if(temp==rev):
            ans.append(rev)
print(ans)
从这个问题中,我实际上会反转范围(1000100,-1)
因为我们正在寻找最大的,所以最好是反向工作。

欧拉计划特别告诉你,如果你不能解决它,你就不能解决它。一行代码只是为了好玩:
打印(排序([i*j代表范围内的i(999,99,-1)代表范围内的j(i,99,-1),如果str(i*j)=(str(i*j))[:-1]][-1])
ans = 0
for i in range(100, 999):
    for j in range(100, 999):
        product = str(i * j)
        if int(product) > ans:  # check if the value is bigger then the last palindrome.
            if product == product[::-1]:  # check if it is a palindrome.
                ans = int(product)
print(ans)