Информатика

7 600 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Задана функция положения тела \(s(t)\) в виде полинома степени не выше 3. Дано также целое число \(t_0\). Выполните три вычисления:

  1. Скорость \(v(t)=s''(t)\) — первая производная, в упрощённом виде.

  2. Ускорение \(a(t)=s''''(t)\) — вторая производная, в упрощённом виде.

  3. Значение скорости в момент \(t_0\): число \(v(t_0)\).

Формат ввода

Строка 1: выражение полинома в синтаксисе Python (** для возведения в степень, * для умножения, переменная t). Строка 2: целое число \(t_0\) (\(-100\le t_0\le 100\)).

Формат вывода

Ровно 3 строки:

velocity: <выражение>
acceleration: <выражение>
v(<t0>): <число>

Пример ввода:

3*t**2 + 2*t - 5
2

Пример вывода:

velocity: 6*t + 2
acceleration: 6
v(2): 14

Разбор. \(s(t)=3t^2+2t-5\). Скорость: \(v(t)=s''(t)=6t+2\). Ускорение: \(a(t)=v''(t)=6\). Значение: \(v(2)=6\cdot2+2=14\).

Подсказки. Для разбора строки: parse_expr(s, ...). Производная: simplify(diff(expr, t)). Подстановка: expr.subs(t, t0).

В расписании аэропорта записано время отправления каждого рейса (часы и минуты). Ночным считается рейс, отправляющийся с 23:00 до 5:59 включительно. Определите, есть ли в расписании хотя бы один ночной рейс.

Формат входных данных

Каждая строка содержит два целых числа: часы и минуты отправления рейса (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «-1 -1».

Формат выходных данных

«YES», если ночной рейс есть, или «NO» в противном случае.

Охранник записывает время прихода каждого сотрудника на работу (часы и минуты). Определите время прихода самого раннего сотрудника.

Формат входных данных

Каждая строка содержит два целых числа: часы и минуты прихода одного сотрудника (5 ≤ часы ≤ 12, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «0 0».

Формат выходных данных

Два числа через пробел — часы и минуты прихода самого раннего сотрудника.

В расписании записаны моменты начала каждого урока (часы и минуты). Уроки идут в хронологическом порядке. Перерывом считается промежуток между концом одного урока и началом следующего. Каждый урок длится ровно 45 минут. Определите количество перерывов длительностью более 30 минут.

Формат входных данных

Каждая строка содержит два целых числа: часы и минуты начала урока (0 ≤ часы ≤ 20, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «0 0». Она не является временем урока. Гарантируется, что уроков не менее двух.

Формат выходных данных

Одно число — количество перерывов длительностью строго более 30 минут.

Рабочий выполняет задания в течение смены. Длительность каждого задания фиксируется в часах и минутах. Определите суммарное рабочее время.

Формат входных данных

Каждая строка содержит два целых числа: часы и минуты длительности одного задания (0 ≤ часы ≤ 8, 0 ≤ минуты ≤ 59). Последовательность заканчивается строкой «0 0». Она не является заданием.

Формат выходных данных

Два числа через пробел — суммарное рабочее время в часах и минутах.

На экзамене фиксируется время выполнения каждого задания учеником в часах и минутах. Определите среднее время выполнения задания.

Формат входных данных

В первой строке подаётся количество заданий N. В каждой из следующих N строк — два целых числа: часы и минуты, затраченные на одно задание (0 ≤ часы ≤ 3, 0 ≤ минуты ≤ 59).

Формат выходных данных

Два числа через пробел — среднее время в часах и минутах (минуты округлить до целого вниз).

В журнале записано время начала каждого события (часы и минуты). Определите, сколько времени прошло от самого раннего события до самого позднего.

Формат входных данных

В первой строке подаётся количество событий N (N ≥ 2). В каждой из следующих N строк — два целых числа: часы и минуты начала события (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59).

Формат выходных данных

Два числа через пробел — разница в часах и минутах между самым поздним и самым ранним событием.

Учитель записывает фактическую длительность каждого проведённого урока в часах и минутах. Стандартная длительность урока — 45 минут. Определите, сколько уроков длились дольше стандартного времени.

Формат входных данных

В первой строке подаётся количество уроков N. В каждой из следующих N строк — два целых числа: часы и минуты длительности урока (0 ≤ часы ≤ 2, 0 ≤ минуты ≤ 59).

Формат выходных данных

Одно число — количество уроков, длившихся строго дольше 45 минут.

В расписании руководителя записана длительность каждого совещания в часах и минутах. Определите длительность самого длинного совещания.

Формат входных данных

В первой строке подаётся количество совещаний N. В каждой из следующих N строк — два целых числа: часы и минуты длительности одного совещания (0 ≤ часы ≤ 8, 0 ≤ минуты ≤ 59).

Формат выходных данных

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

Оператор связи фиксирует длительность каждого телефонного разговора в часах и минутах. Определите суммарную длительность всех разговоров.

Формат входных данных

В первой строке подаётся количество звонков N. В каждой из следующих N строк — два целых числа: часы и минуты длительности одного звонка (0 ≤ часы ≤ 10, 0 ≤ минуты ≤ 59).

Формат выходных данных

Два числа через пробел — суммарное время в часах и минутах.

Мурмурградск — город котиков! И, как и во всех таких городах, в Мурмурградске у каждого котика есть собственный дом, а у каждого домика — уникальный номер. Котики не любят мочить лапки, поэтому некоторые дома соединены специальными котодорожками, полностью защищенными от воды.

Многолетние исследования показали следующие примечательные черты Мурмурградска:

1. Дома и котодорожки представляют собой дерево, где дома — вершины, а котодорожки — ребра.

2. Между двумя домами есть котодорожка тогда и только тогда, когда котики в этих домах дружат.

Кошачий мэр решил, что для развития общей сплоченности каким-то котикам нужно будет поменять место жительства. При этом мэру важно, чтобы у всех оставалось свое личное пространство, поэтому никакие два котика не должны жить в одном доме после переезда. Мэр также понял, что, во избежание всеобщего хаоса, надо добавить в план немного стабильности: жители домика номер \(1\) должны остаться на месте.

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

У мэра слишком много дел, поэтому за помощью он обратился к вам! Он поставил перед вами следующую задачу: посчитать, сколько существует планов переезда, удовлетворяющих и критериям мэра, и критериям населения.

Так как это число может быть очень большим, необходимо посчитать его по модулю \(998244353\).

Формат входных данных
В первой строке записано одно целое число \(t\) — количество наборов входных данных. Далее следуют \(t\) наборов входных данных.

Каждый набор данных состоит из нескольких строк. Первая строка набора данных содержит одно целое число \(n\) — количество вершин в дереве. Далее идут \(n - 1\) строк, каждая содержит два целых числа \(u\) и \(v\) (\(1 \leq u, v \leq n\), \(u \neq v\)) — две вершины, которые соединены ребром.

Гарантируется, что заданный граф является деревом, в нем отсутствуют петли и кратные ребра.

Формат выходных данных
Для каждого набора входных данных выведите в отдельной строке одно целое число — количество подходящих планов переезда по модулю \(998244353\).

 

Вася программирует так интенсивно, что от его ударов по клавиатуре некоторые клавиши с буквами вывалились и не вставляются обратно — такие клавиши он складывал в особый ящик. Клавиатур Вася сломал немало, поэтому некоторые выпавшие клавиши могут встречаться в нескольких экземплярах.

Проводя весеннюю уборку, Вася наткнулся на ящик с клавишами и подсчитал, сколько раз встречается каждая клавиша. Теперь он хочет составить из этих клавиш одну строку и украсить ей интерьер своего кабинета. Вася считает, что чем больше различных подстрок длины k (последовательностей подряд идущих символов длины k) есть в этой строке, тем сильнее эта строка украсит интерьер. Помогите Васе с украшением.

Формат ввода

В первой строке задается количество наборов входных данных T. В этой задаче T всегда равно 1.

В первой строке каждого описания набора дано два целых числа m и k ( 1≤m≤3, 1≤k≤13 ) — число различных типов клавиш и требуемая длина различных подстрок.

В следующих m строках описываются клавиши. Каждое описание состоит из маленькой английской буквы Ci​, написанной на клавише, и числа Ti​ — количества таких клавиш. Гарантируется, что суммарное количество клавиш не превосходит 16.

Формат вывода

Для каждого набора выведите строку, составленную из клавиш. Чем больше в ней различных подстрок длины k — тем выше будет балл.

Вася открыл собственный классифайд (доску объявлений). Устроен его классифайд следующим образом: для каждого типа товара продавец с номером \(i\) может выставить на продажу только одну единицу товара и заранее указывает минимальную цену \(S_i\), за которую он готов его продать. Каждый покупатель может купить только одну единицу товара, покупатель с номером \(j\) указывает максимальную цену \(B_j\), за которую он готов купить товар. Раз в день Вася собирает все заявки и распределяет покупателей и продавцов, которые заключат сделку и по какой цене. При этом сделка между продавцом \(i\) и покупателем \(j\) может состояться только если \(S_i \le B_j\) по любой цене от \(S_i\) до \(B_j\) (цену назначает Вася).

Вася получает процент с каждой сделки, поэтому он хотел бы максимизировать суммарную стоимость проданных товаров. Помогите Васе определить эту максимальную стоимость.

Формат входных данных
В первой строке задается число наборов тестовых данных \(T\). В этой задаче \(T\) всегда равно 1.

В первой строке описания каждого набора записано число \(N\) (\(1 \le N \le 10\)) — количество продавцов.

В следующей строке записано \(N\) чисел \(S_i\) (\(1 \le S_i \le 100\)).

В следующей строке записано число \(M\) (\(1 \le M \le 10\)).

В следующей строке записано \(M\) чисел \(B_i\) (\(1 \le B_i \le 100\)).

Описания наборов отделяются друг от друга пустой строкой.

Формат выходных данных
Для каждого набора входных данных выведите одно число — максимальную суммарную стоимость проданных товаров.

В этой задаче на проверку необходимо сдать исходный код программы.

A + B#91346

Так как стандартная операция сложения слишком сложна, чтобы описать её в рамках этой страницы, мы введём свою операцию сложения <<+>>. Результатом сложения чисел \(A\) и \(B\) (обозначим \(A+B\)) назовём число, полученное приписыванием справа к \(A\) числа \(B\). Например \(20 + 25 = 2025\), а \(25 + 20 = 2520\). Как видите, \(A + B\) не всегда равно \(B + A\), так что найдите большее из них.

То есть по заданным \(A\) и \(B\) требуется найти наибольшее из чисел \(A+B\) и \(B+A\).

В единственной строке вводятся два целых числа \(A\) и \(B\) (\(0 < A, B < 1000\)).

Выведите единственное число — наибольшее из чисел \(A+B\) и \(B+A\).

На перемене в школьной столовой образовалась очередь из n человек, в которой стоят мальчики и девочки. Изначально ребята встали в таком порядке, в котором они забежали в столовую. Однако через некоторое время мальчикам стало неловко, что они стоят в очереди перед девочками, и они стали каждую секунду пропускать девочек вперед.

Опишем процесс более точно. Пусть позиции в очереди последовательно пронумерованы целыми числами от 1 до n, причем тот, кто стоит на позиции номер 1 обслуживается первым. Тогда, если в момент времени x на i-ой позиции стоит мальчик, а на (i + 1)-ой — девочка, то в момент времени x + 1 на i-ой позиции будет находиться девочка, а на (i + 1)-ой — мальчик. Моменты времени заданы в секундах.

Вам задано расположение ребят в начальный момент времени, определите, как будет выглядеть очередь через t секунд.

Входные данные

В первой строке заданы два целых числа n и t (1 ≤ n, t ≤ 50), обозначающие количество ребят в очереди и время, спустя которое требуется определить, как будет выглядеть очередь.

В следующей строке задана строка s, обозначающая начальную расстановку школьников. Если на i-ой позиции в очереди стоит мальчик, то i-ый символ строки s равен «B», иначе i-ый символ равен «G».

Выходные данные

Выведите строку a, обозначающую расположение ребят в очереди спустя t секунд. Если на i-ой позиции через заданное время будет стоять мальчик, то i-ый символ a должен быть равен «B», иначе он должен быть равен «G».

Вы играете в игру «Бинарная Сила» и управляете персонажем, у которого есть 𝑑 = 2𝑛 навыков, пронумерованных 1 до 𝑑. Эти навыки расположены на листьях полного двоичного дерева высоты 𝑛, изначально все навыки имеют уровень 1. Пример такого дерева для 𝑛 = 3 приведен на иллюстрации ниже.



После этого вы начинаете прокачивать навыки следующим образом.
• Навыки прокачиваются посредством заполнения двоичного дерева снизу вверх.
• Для очередной вершины дерева вы должны выбрать и записать в нее один из двух навыков, записанных в
непосредственных детях этой вершины (на рисунке из детей в родителя ведут стрелки).
• Уровнем навыка считается число вершин, в которых выбран этот навык.
Пример корректного распределения навыков по дереву для 𝑛 = 3 приведен ниже.


В этом примере первый навык имеет уровень 4, седьмой – уровень 3, четвертый и пятый – уровень 2, а второй, третий, шестой и восьмой не были прокачаны ни разу, поэтому остались на уровне 1.
Кроме прокачки персонажа, в игре есть 𝑚 различных квестов, с помощью которых можно получать монетки. Квесты активируются после того, как все дерево навыков было заполнено.
Квесты бывают трех типов:
1. «𝑙𝑒𝑠𝑠 𝑥𝑖 𝑘𝑖 𝑠𝑖» – вы получите 𝑠𝑖 монет, если уровень навыка с номером 𝑥𝑖 окажется строго меньше 𝑘𝑖 .
2. «𝑒𝑥𝑎𝑐𝑡 𝑥𝑖 𝑘𝑖 𝑠𝑖» – вы получите 𝑠𝑖 монет, если уровень навыка с номером 𝑥𝑖 окажется равен 𝑘𝑖 .
3. «𝑙𝑒𝑠𝑠 𝑥𝑖 𝑘𝑖 𝑠𝑖» – вы получите 𝑠𝑖 монет, если уровень навыка с номером 𝑥𝑖 окажется строго больше 𝑘𝑖 .
Так как монеты – очень ценный ресурс в игре «Бинарная Сила», вы хотите узнать максимальное количество монет, которое возможно получить с помощью имеющихся квестов после улучшения всех навыков.

Формат входных данных
Каждый тест состоит из нескольких независимых наборов входных данных. Первая строка содержит одно целое число 𝑡 – количество наборов входных данных (1 ≤ 𝑡 ≤ 104). Далее следует описание наборов входных данных.
Каждый набор начинается со строки, содержащей два целых числа 𝑛 и 𝑚 – высоту дерева навыков и количество квестов соответственно (1 ≤ 𝑛 ≤ 15; 0 ≤ 𝑚 ≤ 50 000). Число навыков при этом равно 𝑑 = 2𝑛.
Далее следуют 𝑚 строк, 𝑖-я из которых содержит четыре целых числа 𝑡𝑖, 𝑥𝑖, 𝑘𝑖, 𝑠𝑖 – тип квеста и его описание (1 ≤ 𝑡𝑖 ≤ 3; 1 ≤ 𝑥𝑖 ≤ 𝑑; 1 ≤ 𝑘𝑖 ≤ 𝑛; 1 ≤ 𝑠𝑖 ≤ 109). Типы квестов следуют в том же порядке, в котором они перечислены в условии: 𝑡𝑖=1 соответствует квесту типа «𝑙𝑒𝑠𝑠», 𝑡𝑖 = 2 – квесту типа «𝑒𝑥𝑎𝑐𝑡» и 𝑡𝑖 = 3 – квесту типа «𝑚𝑜𝑟𝑒».
Гарантируется, что сумма 𝑑 по всем наборам входных данных не превосходит 216 и сумма 𝑚 по всем наборам входных данных не превосходит 50 000

Формат выходных данных
Для каждого набора выходных данных в отдельной строке выведите единственное число – максимальное количество монет, которые можно заработать.
 
Известный завод ждет реорганизация — его собираются переоборудовать 𝑛 новейшими станками. Перед тем, как эти станки будут установлены, требуется разработать интерфейс для обработки задач на этих станках.
После реорганизации наладчик завода будет распределять поступающие задачи между станками. У каждой задачи есть длительность. У каждого станка есть независимая очередь задач, причем новую задачу можно добавить либо строго в конец этой очереди, либо строго в начало, если это срочная задача.
Станки работают строго в порядке очереди, обрабатывая задачи подряд. Как только станок завершает задачу, он сразу же начинает работу над следующей в очереди, если такая есть. На переключение между задачами время не тратится.
Формально определим время начала работы над задачей как первый момент времени, после которого прогресс по задаче строго увеличится. Так, если в момент времени 𝑡 на свободный станок приходят сначала обычная задача 𝐴 и затем срочная задача 𝑈, временем начала 𝑈 станет 𝑡, а временем начала 𝐴 — момент завершения 𝑈.
Аналогично, время завершения работы над задачей — первый момент времени, когда прогресс по задаче достигает ее длительности. Так, если в момент времени 𝑡 прогресс по задаче 𝐴 достиг ее длительности, и станку поступил запрос на обработку срочной задачи 𝑈, временем завершения 𝐴 все равно будет 𝑡.
Для большего понимания советуем после прочтения условия ознакомиться с иллюстрацией внизу.
Всего поддерживается четыре типа запросов.
  1. Добавить задачу номер 𝑖 длительностью 𝑑 в конец очереди 𝑘-го станка.
    Если его очередь до этого была пустой, станок тут же начинает работу над добавленной задачей
  2. Отменить задачу с номером 𝑖. Если эта задача еще не была начата, она удаляется из очереди, а порядок остальных задач в очереди не меняется. Если эта задача уже была начата, работа над ней тут же останавливается, и станок берет в работу следующую задачу из очереди. Если эта задача уже была завершена или такой задачи не было, запрос отмены игнорируется
  3. Добавить срочную задачу с номером 𝑖 длительностью 𝑑 в начало очереди 𝑘-го станка. В этом случае работа над текущей задачей (если она есть) на 𝑘 -м станке приостанавливается с сохранением прогресса, и в работу берется данная срочная задача.
    До момента завершения срочной задачи все запросы добавления или отмены новых задач к станку номер 𝑘 игнорируются для экономии ресурсов. Иными словами, если в момент времени 𝑡 поступил запрос добавления срочной задачи, все следующие запросы, поступающие к 𝑘-му станку в моменты времени с 𝑡 включительно до 𝑡 + 𝑑 не включительно будут проигнорированы.
    По завершении срочной задачи, если работа над какой-то обычной задачей в очереди была приостановлена, эта задача без задержек возвращается в обработку.
  4. Вывести ожидаемый момент времени завершения работы 𝑘-го станка.
    Для станка без задач в очереди «ожидаемым» временем завершения его работы будем считать текущий момент времени.
Еще раз обратите внимание, что во время исполнения срочной задачи станок игнорирует только все запросы добавления и отмены задач (включая добавление другой срочной задачи). Про запрос отмены будем считать, что он идет к тому станку, в очереди которого лежит соответствующая задача. Запросы вывода ожидаемого момента завершения работы не игнорируются.
Вам необходимо помочь наладчику и вывести для каждой задачи время начала и завершения работы над ней.


Формат входных данных
В первой строке дано целое число 𝑇 (1 ≤ 𝑇 ≤ 1000) — количество наборов входных данных. В первой строке описания набора входных данных через пробел даны два целых числа 𝑛 и 𝑞 (1 ≤ 𝑛, 𝑞 ≤ 105) —
количество станков и количество запросов. Гарантируется, что сумма 𝑛 и сумма 𝑞 по всем наборам входных данных обе не превосходят 105.
В следующих 𝑞 строках описаны запросы к заводу в одном из следующих форматов:
1. «𝑡 𝑠𝑐ℎ𝑒𝑑𝑢𝑙𝑒 𝑖 (𝑑) 𝑜𝑛 𝑘» — добавить задачу на 𝑘-й станок;
2. «𝑡 𝑐𝑎𝑛𝑐𝑒𝑙 𝑖» — отменить задачу;
3. «𝑡 𝑢𝑟𝑔𝑒𝑛𝑡 𝑖 (𝑑) 𝑜𝑛 𝑘» — добавить срочную задачу на 𝑘-м станке;
4. «𝑡 𝑒𝑥𝑝𝑒𝑐𝑡𝑎𝑡𝑖𝑜𝑛 𝑘» — узнать текущее ожидаемое время завершения работы 𝑘-го станка.
Параметр 𝑡 — момент совершения запроса (целое неотрицательное число от 0 до 109). Для всех запросов выполняется 1 ≤ 𝑘 ≤ 𝑛, 1 ≤ 𝑖 ≤ 109 и 1 ≤ 𝑑 ≤ 109.
Также гарантируется, что номера задач (𝑖) уникальны и не повторяются, а запросы упорядочены по времени, то есть 𝑡 каждого следующего запроса не меньше, чем 𝑡 предыдущего.


Формат выходных данных
Выведите в отдельной строке текущее ожидаемое время работы соответствующего станка после каждого запроса типа «𝑒𝑥𝑝𝑒𝑐𝑡𝑎𝑡𝑖𝑜𝑛».
Затем выведите по строке на каждую задачу, запрос на добавление которой не был проигнорирован. Задачи должны быть упорядочены по возрастанию их номеров. В каждой строке через пробел должны быть выведены три числа: номер задачи, время начала ее обработки и время конца ее обработки (или отмены, если задача была отменена до завершения).
Для задач, которые были отменены до начала работы над ними, считайте время начала равным времени первого запроса их отмены.



Замечание
В первом примере из условия обе задачи будут обработаны по расписанию: с 0 до 10 и с 4 до 7 соответственно.
Во втором примере:
1. первая задача должна обрабатываться на первом станке в период [0, 5];
2. вторая задача должна обрабатываться на втором станке в период [0, 5];
3. в момент времени 2 срочная задача номер 3 добавляется на первый станок; она будет обрабатываться в период [2, 7];
4. в момент времени 6 первому станку нужно еще 4 единицы времени на завершение задач 4 и 1; второй станок завершил работу в момент времени 5, а третий станок вообще не начинал работу — для них время ожидания до завершения работы равно 0.

Подробная иллюстрация к третьему примеру приведена ниже. Здесь синим обозначен прогресс по задачам, зеленым — завершенные задачи, красным — отмененные, а градиентом — срочные. Все интервалы короче 1 единицы времени (см. отмененную задачу 3) стоит воспринимать как интервалы длительностью 0.





 

Монотонная подпоследовательностьстандартный вводстандартный вывод1 секунда256 мегабайт

Рассмотрим последовательность \(a_1, a_2, \ldots, a_n\). Его подпоследовательность \(a_{i_1}, a_{i_2}, \ldots, a_{i_k}\), где \(1 \le i_1 < i_2 < \ldots < i_k \le n\) назвается монотонной, если либо \[a_{i_1} \le a_{i_2} \le \ldots \le a_{i_k},\] либо \[a_{i_1} \ge a_{i_2} \ge \ldots \ge a_{i_k}.\]

Для заданных \(n\) и \(k\), найдите последовательность, состоящую из чисел от 1 до \(n\) таких, что каждое из чисел встречается в ней ровно один раз, а длина самой длинной монотонной подпоследовательности (возрастающей или убывающей) составляет ровно \(k\).

Формат входных данных
Первая строка входных данных содержит целые числа \(n\) и \(k\) (\(1 \le k \le n \le 10^6\)), длина последовательности и требуемая длина самой длинной монотонной подпоследовательности.

Формат выходных данных
Если требуемой последовательности не существует, выведите \(-1\) в первой и единственной строке.

Если требуемая последовательность существует, выведите ее в первой и единственной строке. Если подходящих последовательностей несколько, можно вывести любую из них.

 

 

Рассмотрим натуральное число \(x\). Требуется прибавить к нему минимальное возможное целое неотрицательное число \(y\), чтобы двоичная запись получившегося числа \(x+y\) имела ровно \(k\) единиц.

Формат входных данных
Первая строка ввода содержит натуральное число \(x\) (\(1 \le x \le 10^{18}\)).

Вторая строка ввода содержит натуральное число \(k\) (\(1 \le k \le 60\)).

Формат выходных данных
Выведите минимальное возможное целое неотрицательное число \(y\), такое что двоичная запись числа \(x+y\) имеет ровно \(k\) единиц.

Постулат Бертрана утверждает, что для любого \(n \ge 2\) найдётся простое число \(p\), для которого \(n < p < 2n\). Постулат Бертрана был сформулирован в качестве гипотезы в 1845 году французским математиком Бертраном, проверившим её до \(n = 3\,000\,000\), и доказан в 1852 году Чебышёвым.

Петя хочет повторить подвиг Бертрана и убедиться в справедливости его постулата для разных значений \(n\). Однако, поскольку он не сомневается в корректности доказательства Чебышёва, он немного изменил цель: для данного \(n\), Петя хочет найти максимальный по длине отрезок составных чисел, который лежит строго между \(n\) и \(2n\).

Требуется найти такие \(l\) и \(r\), чтобы \(n < l \le r < 2n\), все числа от \(l\) до \(r\), включительно, были составными и \(r - l\) было максимально. Если подходящих отрезков несколько, необходимо вывести тот, у которого \(l\) минимально.

Формат входных данных
На вход подаётся одно целое чиcло \(n\) (\(3 \le n \le 10^7\)).

Формат выходных данных
Выведите искомые \(l\) и \(r\).

Поделиться
Класснуть