Информатика, вопрос задал Milany2548 , 6 лет назад

ПРОГРАММА НА ПИТОН!!!!
Палиндром - это число, одинаково читающееся в обоих направлениях (не меняется при перестановке своих цифр в обратном порядке).
Дано натуральное число K. Выведите на экран количество натуральных палиндромов, не превосходящих число К.

Входные данные
Задано единственное число K (1<=K<=100000).

Выходные данные
Необходимо вывести количество натуральных палиндромов, не превосходящих K.

Примеры
Входные данные -
1
1
Выходные данные -
100
18
Запрещенные операторы: list;[;find;index;reverse

Ответы на вопрос

Ответил mathgenius
0

Первый способ.

def ispalindrom(n): #Если палиндром True, иначе False.

   k = n

   m = 0

   while k!= 0:

       m = 10 * m + k % 10

       k //= 10

   return m == n

print(f'Количество палиндромов:',sum(map(ispalindrom, range(1, int(input('Введите число K: '))+1))))

Второй способ. (c использованием строк)

print(f'Количество палиндромов:',sum(map(lambda x: str(x) == str(x)[::-1], range(1, int(input('Введите число K: '))+1))))

Приложения:

mathgenius: Можно решить быстрее через строки, но не знаю, можно ли их использовать в
mathgenius: этой задаче
mathgenius: А вообще задачка легко считается математически, можно вывести формулу количества палиндромов на интервале, но в решении этого делать не стал, ибо это не цель задания...
mathgenius: Через строки проверка на палиндром может быть записана в одну строчку: n == n[::-1] , тут n это строковый номер.
mathgenius: В этом случае решение уложится в одну строчку:
mathgenius: print(f'Количество палиндромов:',sum(map(lambda x: str(x) == str(x)[::-1], range(1, int(input('Введите число K: '))+1))))
Новые вопросы