Project Euler # 4 крупнейший палиндром с использованием Python - PullRequest
0 голосов
/ 13 марта 2019
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)

Может кто-нибудь сказать мне, что не так в этой вышеупомянутой проблеме. Я не получаю окончательный ответ

В) Палиндромное число читается одинаково в обоих направлениях. Самый большой палиндром из двух двузначных чисел равен 9009 = 91 × 99.

Найдите самый большой палиндром из двух трехзначных чисел.

1 Ответ

0 голосов
/ 13 марта 2019

Я думаю, вы неправильно поняли вопрос из того, что я вижу в вашем коде.Вопрос: палиндромное число читается одинаково в обоих направлениях.Наибольший палиндром, составленный из произведения двух двузначных чисел, равен 9009 = 91 × 99. Таким образом, в этом случае палиндромное значение равно 9009, а когда вы читаете его вперед и назад, оно равно 9009. Вопрос, который задают, - это найти два 3Цифровые числа при умножении вместе дают самый большой палиндром.

, поскольку наибольший возможный палиндром для этого равен 913 x 993 = 906609

, поэтому ваш код будет упрощен до этого.

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)

Вы бы задали вопрос: я бы на самом деле изменил диапазон (1000, 100, -1), поскольку, поскольку мы находим наибольшее, было бы лучше поработать с ним в обратном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...