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

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

07.03.2023, 12:47. Показов 2548. Ответов 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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
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
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru