С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 9

Следующий палиндром

24.03.2020, 18:37. Показов 6506. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Натуральное число называется палиндромом, если его запись в десятичной системе счисления читается слева направо также, как и справа налево. По данному натуральному числу N определите следующее за ним натуральное число (то есть наименьшее число, которое превосходит N), являющееся палиндромом.

Формат входного файла:

Программа получает на вход одно натуральное число N, состоящее не более чем из 200 цифр.

Формат выходного файла:

Программа должна вывести наименьшее натуральное число, которое больше N и является палиндромом.

Примеры:

4321 => 4334


Сразу скажу, что это задание - из Сириуса. И по сути оно довольно лёгкое. Вот один из примеров решений:
Python
1
2
3
4
5
6
7
8
a=input()
b=0
while b!=1:
    if a!=a[::-1]:
        a=str(int(a)+1)
    else:
        b=1
print (a)
Но это решение неправильное из-за скорости выполнения: с маленькими цифрами это програмка справляется на "Ура", но если вы введёте 12 цифр, то он начнёт подлагивать, а если больше - он вообще не выдаёт результат (понятно почему). Можете подсказать, если способ "ускорить" процесс? Бьюсь над этим вопросом, но пока идей нет.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.03.2020, 18:37
Ответы с готовыми решениями:

Следующий палиндром
Натуральное число называется палиндромом, если его запись в десятичной системе счисления читается слева направо также, как и справа налево....

Палиндром
Прошу помочь в решении задачи! Дано слово (все буквы строчные). Выведите: слово YES, если исходное слово является палиндромом (слово,...

Палиндром
"Introduction to C++". Одна из задач дисциплины звучит следующим образом: нужно узнать, является ли шестизначное число палиндромом....

7
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
24.03.2020, 19:16
Лучший ответ Сообщение было отмечено MaksimKim как решение

Решение

Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/python3
 
number = int(input())
 
 
def get_next_palindrom(num):
    num = str(num)
 
    # Если строка палиндром, то возвращаем её саму
    if num == num[::-1]:
        return num
 
    # Если число цифр чётное
    if len(num) % 2 == 0:
        # Выделяем левую часть, чтобы зафиксировать левое отражение палиндрома
        left_part = num[:len(num) // 2]
 
        # Если левая часть + перевёрнутая левая часть меньше итогового числа
        if int(left_part + left_part[::-1]) < int(num):
            # Увеличиваем левую часть на единицу
            left_part = str(int(left_part) + 1)
 
        # Возвращаем левую часть + перевёрнутую левую часть
        return int(left_part + left_part[::-1])
 
    # Если число цифр чётное
    else:
        # Выделяем центральная цифра палиндрома
        mid_digit = num[len(num) // 2]
        # Выделяем левую часть
        left_part = num[:len(num) // 2]
 
        # Если левая часть + центральная цифра + перевёрнутая левая часть
        # меньше итогового числа
        if int(left_part + mid_digit + left_part[::-1]) < int(num):
            # Склеиваем левую часть и центральную цифру, переводим в формат
            # числа и увеличиваем на единицу
            left_part_with_mid = str(int(left_part + mid_digit) + 1)
 
            # Разъединяем левую часть и центральную цифру
            ledt_part = left_part_with_mid[:-1]
            mid_digit = left_part_with_mid[-1]
 
        # Возвращаем левую часть + центральную цифру + перевёрнутую
        # левую часть
        return left_part + mid_digit + left_part[::-1]
 
 
print(get_next_palindrom(number))

Вроде работает. Сразу говорю, комментировал торопясь, так что если что-то не понятно, то могу пояснить.
1
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 9
24.03.2020, 19:22  [ТС]
Нет, всё понятно. Спасибо за идею.
0
1 / 1 / 0
Регистрация: 16.03.2020
Сообщений: 2
24.03.2020, 22:09
Цитата Сообщение от unfindable_404 Посмотреть сообщение
41 ledt_part = left_part_with_mid[:-1]
В названии переменной допущена ошибка или это намеренный ход?
1
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
24.03.2020, 22:11
Цитата Сообщение от IvanNov1 Посмотреть сообщение
В названии переменной допущена ошибка или это намеренный ход?
Очепятался)))
0
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 9
24.03.2020, 23:09  [ТС]
unfindable_404, слушай, ничего не понимаю: в твоей программе всё логично написано и она выводит правильные ответы (кучу раз проверял), но всё равно есть какая-та ошибка, так пишет Сириус - там бот вводит разные значения и проверяет ответы. Нет ли у тебя предположений по поводу этой ситуации: какие-нибудь сомнение в твоей программе (строка неправильна написана или ещё что-нибудь)? Если есть - напиши пожалуйста, попытаюсь найти ошибку с помощью твоих предположений.
Спасибо ещё раз.
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,757
25.03.2020, 01:54
MaksimKim, unfindable_404, ошибка в 9-ой строке,
Цитата Сообщение от MaksimKim Посмотреть сообщение
вывести наименьшее натуральное число, которое больше N
2
0 / 0 / 0
Регистрация: 04.03.2020
Сообщений: 9
25.03.2020, 02:49  [ТС]
u235, спасибо - и вправду, нужно было внимательней читать условие задачи!

Добавлено через 8 минут
И да - не большая правка:
Python
1
2
if num == num[::-1]:
    n=str(int(n)+1)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2020, 02:49
Помогаю со студенческими работами здесь

Палиндром
Дано слово, состоящее только из заглавных и строчных латинских букв. Проверьте, верно ли, что это слово читается одинаково как справа...

Палиндром
Суть задачи в том что бы проверить является ли число палиндромом, если да то вывести это число, если нет то вывести ближайшее число по...

Палиндром
Всем доброго времени суток! Пытаюсь написать программу, которая бы распечатывала введённые слова до первого встретившегося слова,...

Палиндром
Назовем натуральное число палиндромом, если в его десятичной записи все цифры расположены симметрично (совпадают первая и последняя...

Словесный палиндром
Добрый день. Подскажите пожалуйста, почему закомментированный код не работает, а цикл while, который, как мне кажется, такой же, работает?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru