Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/65: Рейтинг темы: голосов - 65, средняя оценка - 4.97
34 / 25 / 8
Регистрация: 16.11.2019
Сообщений: 179

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

18.03.2020, 11:02. Показов 12248. Ответов 11
Метки нет (Все метки)

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

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

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

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

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

Вот мой код, он работает при моих проверка, но в тестирующей системе не принимают(
Python
1
2
3
4
5
6
7
8
9
10
n = input()
if len(n) % 2 != 0:
    print('1' + '0' * (len(n) - 1) + '1')
else:
    new_n = n[0:(len(n) // 2)] + n[0:(len(n) // 2)][::-1]
    if int(new_n) > int(n):
        print(new_n)
    else:
        new_n = str(int(n[0:(len(n) // 2)]) + 1) + str(int(n[0:(len(n) // 2)]) + 1)[::-1]
        print(new_n)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2020, 11:02
Ответы с готовыми решениями:

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

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

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

11
4 / 3 / 1
Регистрация: 18.03.2020
Сообщений: 6
18.03.2020, 12:18
Python
1
2
3
4
num = int(input())
while str(num) != str(num)[::-1]:
    num += 1
print(num)
Считываем число, потом пока оно не палиндром прибавляем 1
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
18.03.2020, 12:33
Цитата Сообщение от hate_PEP8 Посмотреть сообщение
Считываем число, потом пока оно не палиндром прибавляем 1
крутая идея для чисел с количеством цифр ближе к 200))
0
6 / 4 / 2
Регистрация: 05.12.2015
Сообщений: 14
18.03.2020, 19:28
попробуйте этот вариант. по идеи меньше чем за 200 итераций должен справляться
Кликните здесь для просмотра всего текста
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
n = str(input())
s_n = list(n)
if len(s_n) > 1:
    if s_n != s_n[::-1]:
        if len(str(n)) % 2 == 0:
            k = 0
            c_p = int(len(s_n) / 2 - 1)
        else:
            k = 1
            c_p = len(s_n)//2
        s = 1
        while c_p > -1:
            if s_n[c_p-k] == s_n[c_p+s]:
                c_p -= 1
                s += 2
            elif s_n[c_p-k] > s_n[c_p+s]:
                s_n[c_p+s] = s_n[c_p-k]
                s_n[c_p+s+1:] = s_n[0:c_p-k][::-1]
                c_p = -10
            elif s_n[c_p-k] < s_n[c_p+s]:
                s_n[c_p] = str(int(s_n[c_p])+1)
                for i in range(c_p+1, c_p+s):
                    s_n[i] = '0'
                s_n[len(s_n)-c_p-1:] = s_n[0:c_p+1][::-1]
                c_p = -10
        print(''.join(s_n))
    else:
        print(n)
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
18.03.2020, 20:03
alexmonik,
1:
Цитата Сообщение от _qikert Посмотреть сообщение
вывести наименьшее натуральное число, которое больше N
вводишь любое число которое палиндром.

2:
ввожу 1222, выводит 2002, что не минимальное число.

3:
на некоторых примерах выводит вообще не палиндром.
например: 799, выводит 7107

Добавлено через 3 минуты
_qikert, 87978 введите.
0
34 / 25 / 8
Регистрация: 16.11.2019
Сообщений: 179
19.03.2020, 17:47  [ТС]
Привет, переписал код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n = input()
if len(n) % 2 != 0:
    if n == len(n) * '9':
        print('1' + '0' * (len(n) - 1) + '1')
    else:
        len_ = len(n[0:(len(n) // 2 + 1)][::-1])
        new_n = str(int(n[0:(len(n) // 2 + 1)]) + 1) + str(int(n[0:(len(n) // 2 + 1)]) + 1)[::-1][1:(len_ + 1)]
        print(new_n)
else:
    new_n = n[0:(len(n) // 2)] + n[0:(len(n) // 2)][::-1]
    if int(new_n) > int(n):
        print(new_n)
    else:
        if n == len(n) * '9':
            print('1' + '0' * (len(n) - 1) + '1')
        else:
            new_n = str(int(n[0:(len(n) // 2)]) + 1) + str(int(n[0:(len(n) // 2)]) + 1)[::-1]
            print(new_n)
Не проходит 2 теста, не могли бы подсказать в чём ошибка?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
19.03.2020, 17:50
_qikert, сложно читать.
нужно было середину через какуюто переменную обозначить. mid например
0
34 / 25 / 8
Регистрация: 16.11.2019
Сообщений: 179
19.03.2020, 17:51  [ТС]
все нашел ошибку и исправил, все тесты прошли
0
10 / 10 / 0
Регистрация: 16.03.2020
Сообщений: 58
19.03.2020, 19:22
qikert, выложи, пожалуйста, код, который прошел. Заранее спасибо.
0
0 / 0 / 0
Регистрация: 16.03.2020
Сообщений: 18
Записей в блоге: 1
20.03.2020, 09:51
выложите решение плиз
0
10 / 10 / 0
Регистрация: 16.03.2020
Сообщений: 58
20.03.2020, 10:18
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
S = str(input())
if S == '9':
 print('11')
 sys.exit(0)
n = len(S)
S1 = S[:-(n // 2)] + S[:n // 2][::-1]
if S1 > S:
 print(S1)
 sys.exit(0)
n1 = (n + 1) // 2
n2 = n - n1
N = str(int(S[:n1]) + 1)
S2 = N + N[:n2][::-1]
print(S2)
Добавлено через 52 секунды
Ты для сириуса решаешь? есть 37-40?
1
8 / 7 / 1
Регистрация: 18.03.2020
Сообщений: 24
20.03.2020, 19:54
hate_PEP8, он у вас даже в цикл не зайдёт и выведет тоже число
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2020, 19:54
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru