Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 07.03.2023
Сообщений: 3

Выведите одно число ближайший не больший палиндром

07.03.2023, 12:47. Показов 2488. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ближайший не больший палиндром
Вам дано число s содержащее n цифр. Вам нужно найти ближайший палиндром, который не больше заданного числа.

Формат входных данных
Первая строка входных данных содержит число n (1 ≤ n ≤ 100000).
Вторая строка должна содержать само число s.

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

Примеры
Входные данные
3
123
Результат работы
121
Входные данные
3
222
Результат работы
222
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.03.2023, 12:47
Ответы с готовыми решениями:

Найти ближайший простой палиндром, больший заданного n (задача из раздела C++)
Мое решение: isPal n = s == rs where s = show n rs = reverse s isPrime n |...

Заменить элемент за одно обращение на ближайший больший идущий за ним
Даны элементы (числа). Нужно за одно обращение к каждому заменить его на ближайший больший идущий за ним. В случае отсутствия такого...

Найти число-палиндром, больший введенного числа
Смысл моего кода заключается в том, что после ввода числа он ищет число больше чем введенное и так что бы оно было зеркальное(123321). ...

28
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
07.03.2023, 13:56
Python
1
2
3
4
5
6
7
8
def ispalindrom(n):
    s = str(n)
    return s == s[::-1]
_ = input()
for i in range(int(input()), 0, -1):
    if ispalindrom(i):
        print(i)
        break
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.03.2023, 14:34
Parramon, вы чуть чуть не правильно поняли задачу.
1
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
07.03.2023, 15:11
Цитата Сообщение от MenSy21 Посмотреть сообщение
Выведите одно число ближайший не больший палиндром.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def pal(n: int):
    res,nc = 0,n
    while n!=0:
        a = n%10
        res = res*10 + a
        n//=10
        
    if(nc==res):
        return True
    else:
        return False
 
k = int(input("Введите количество разрядов числа: "))
num = int(input("Введите число: "))
npal = num
while not pal(npal):
   npal-=1
 
print(npal)
0
740 / 622 / 151
Регистрация: 04.03.2022
Сообщений: 1,272
07.03.2023, 16:23
eaa, в смысле? В чем я ошибся?
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
07.03.2023, 17:31
Цитата Сообщение от eaa Посмотреть сообщение
вы чуть чуть не правильно поняли задачу.
кстати, да... почему неправильно? Я тоже понял также...
Ввод никому не нужного числа разрядов, затем ввод самого числа с этим количеством разрядов, а потом уже в меньшую сторону ищем ближайший палиндром и выводим его... разве не так?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.03.2023, 18:20
10100000 c шагом -1?
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
07.03.2023, 18:57
eaa, хммм, а это:
Цитата Сообщение от MenSy21 Посмотреть сообщение
строка входных данных содержит число n (1 ≤ n ≤ 100000).
?
И да, ни я, ни Parramon, это условие не реализовали... лично я понадеялся на то, что ТС хоть что-то должен ведь и сам сделать...

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

Добавлено через 19 минут
может быть, что-то не так с условиями...
Python
1
sys.get_int_max_str_digits()
4300
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.03.2023, 18:59
Цитата Сообщение от YuS_2 Посмотреть сообщение
что-то не так с условиями
все так. просто задача решается по другому.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
07.03.2023, 20:53
Цитата Сообщение от eaa Посмотреть сообщение
просто задача решается по другому.
Не, ну можно и так:
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
from sys import exit
def pal(n):
    tmp = str(n)
    return tmp==tmp[::-1]
 
k = int(input("Введите количество разрядов числа: "))
num = input("Введите число: ")
if not 0<=k<=100000 or len(num)!=k:
    print('Ошибка выполнения условий')
    exit()
 
npal = num
while not pal(npal):
    l = int(len(num)/2)
    i1 = num[:l]
    i2 = i1[::-1]
    if len(num)%2:
        i1 = i1 + num[l]
        if int(i1 + i2)>int(num):
            i1 = str(int(i1)-1)
    else:
        if int(i1 + i2)>int(num):
            i1 = str(int(i1)-1)
            i2 = i1[::-1]
    npal =  i1 + i2
 
print(npal)
Только это не снимает ограничения на максимальное количество символов для преобразования str->int
Придется переназначать, если число будет длиннее 4300 символов...
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
08.03.2023, 09:33
Цитата Сообщение от YuS_2 Посмотреть сообщение
преобразования str->int
оно тут и не нужно
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
08.03.2023, 11:23
Цитата Сообщение от eaa Посмотреть сообщение
оно тут и не нужно
Почему?
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
08.03.2023, 11:29
YuS_2, единственное, зачем это действие действительно может понадобиться - это вычесть единицу из числа. Особой сложности сделать это со строковым представлением (без преобразования в инт) тут нет.
1
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
08.03.2023, 11:53
Цитата Сообщение от Red white socks Посмотреть сообщение
зачем это действие действительно может понадобиться - это вычесть единицу из числа.
Да-да, я об этом...
Цитата Сообщение от Red white socks Посмотреть сообщение
Особой сложности сделать это со строковым представлением (без преобразования в инт) тут нет.
Это про, так называемые, "костыли"?
Может проще таки уточнить условия задачи?
Предполагаю, что просто не число разрядов должно быть <=100000 (легко представить набирающего человека такое число символов с клавиатуры и без ошибок ), а само число... но тут все карты в руки ТС-у только...
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
08.03.2023, 12:08
Цитата Сообщение от YuS_2 Посмотреть сообщение
Это про, так называемые, "костыли"?
Костыли - это про другое.
Цитата Сообщение от YuS_2 Посмотреть сообщение
Предполагаю, что просто не число разрядов должно быть <=100000 (легко представить набирающего человека такое число символов с клавиатуры и без ошибок ), а само число...
В типа "олимпиадных" задачах условие зачастую не из реального мира.
В вашей интерпретации не требуется 2 инпута на ввод числа.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
08.03.2023, 12:20
Цитата Сообщение от Red white socks Посмотреть сообщение
В типа "олимпиадных" задачах условие зачастую не из реального мира.
Бывает... не спорю.

Цитата Сообщение от Red white socks Посмотреть сообщение
В вашей интерпретации не требуется 2 инпута на ввод числа.
Ну, в общем-то да... посчитать количество введённых символов, программным путем - операция не сложная...
А вот согласовать введенное число количества разрядов с самим числом, причем без ошибок в количестве тех самых разрядов, это сложнее... особенно, при таком лимите количества.

Добавлено через 32 секунды
Цитата Сообщение от Red white socks Посмотреть сообщение
Костыли - это про другое.
Тогда требуется пример...
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
08.03.2023, 12:24
Цитата Сообщение от YuS_2 Посмотреть сообщение
Тогда требуется пример...
Мне кажется тут требуется решение, а не пример. Но конкретно для этой задачи в меру полезный костыль прописать можно.
0
08.03.2023, 12:32

Не по теме:

Цитата Сообщение от Red white socks Посмотреть сообщение
Но конкретно для этой задачи в меру полезный костыль прописать можно.
Конечно, можно... только, похоже, что ТС-у, уже ничего этого не нужно...

0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
08.03.2023, 15:02
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
n = int(input())
s = input()
 
if len(s) == 1:
    res = s
elif '1' + '0' * (n - 1) == s:
    res = '9' * (n - 1)
else:
    left = s[:n // 2 + n % 2]
    right = s[n // 2 + n % 2:]
    left_rev = left[:n // 2][::-1]
    if right >= left_rev:
        res = left + left_rev
    else:
        left = str(int(left) - 1)
        res = left + left[:len(left) - n % 2][::-1]
 
print(res)
это:
Python
1
left = str(int(left) - 1)
меняет на свою функцию вычитания 1. Как упомянул выше Red white socks.
0
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
08.03.2023, 19:13
Цитата Сообщение от eaa Посмотреть сообщение
меняет на свою функцию вычитания 1.
Чего-то я не понял, что на что и кто меняет?

В Вашем коде, преобразование присутствует? Присутствует.
Следовательно, ограничение в 4300 символов никуда не делось...

Цитата Сообщение от eaa Посмотреть сообщение
Как упомянул выше Red white socks.
А как он упомянул?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.03.2023, 19:13
Помогаю со студенческими работами здесь

Программа должна вывести одно натуральное число — N-e в порядке возрастания число-палиндром
Рассмотрим все натуральные числа, запись которых в десятичной системе счисления является палиндромом ( при этом запись не начинается с...

Ближайший палиндром
Я только начал изучать java после js и не понимаю как тут сделать поиск ближайшего палиндрома к введенному числу, скажем у нас вводится...

Во входном файле записано целое число .В выходной файл выведите одно число – количество кругляшей в числе N
Однажды в просторах рунета появился следующий ребус: 157892 = 3 203516 = 2 409578 = 4 236271 = ? Никто так...

Найти ближайший палиндром
Студент Алихан обожает математику. Самые любимые его числа - это палиндромы. Когда Алихан видит число, которое не является палиндромом, он...

Выведите одно целое число — максимальное число, которое могло получиться в протоколе при игре на данном поле
У Пети имеется игровое поле размером 3×3 , заполненное числами от 1 до 9. В начале игры он может поставить фишку в любую клетку поля. На...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
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. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru