Дома у Наташи живёт несколько котов. Известно, что за ночь один кот роняет от $$$A$$$ до $$$B$$$ плохо закреплённых предметов (а таких предметов у Наташи бесконечно много).
Однажды ночью Наташа сквозь сон $$$N$$$ раз услышала, как что-то упало. Определите, какое наименьшее число котов может у неё жить.
Вводятся три целых числа $$$A$$$, $$$B$$$ и $$$N$$$, каждое в отдельной строке.
Ограничения: $$$0 \le A, B, N \le 10^9$$$, $$$A \le B$$$.
Выведите одно целое неотрицательное число — минимальное количество котов у Наташи. Если решения нет, то выведите -1.
2 3 5
2
2 2 3
-1
В ряд лежат 2*N+1 пустых карточек. Петя на каждой чётной карточке пишет по своему усмотрению знак ">" или "<". Сможет ли Вася вписать на нечётные карточки числа от 1 до (N+1) так, чтобы все неравенства были верными? Каждое число должно быть написано ровно один раз.
В первой строке дано натуральное число N ($$$N\le10^5$$$). Во второй строке дана последовательность из N знаков ">" и "<", разделённых пробелами.
Выведите разделённую пробелами последовательность из натуральных чисел, которая решает задачу Васи, если это возможно, в противном случае выведите -1.
2 < >
1 3 2
Регулярные выражения — это гибкий способ определения шаблонов для поиска и замены в текстах. В данной задаче мы рассмотрим подмножество регулярных выражений, включающее только:
Одно из применений регулярных выражений — проверка, соответствует ли строка заданному шаблону. Например, чтобы проверить, является ли введённое целое неотрицательное число чётным, можно написать такое выражение (для простоты разрешим ведущие нули): (0|1|2|3|4|5|6|7|8|9)*(0|2|4|6|8)
От вас требуется решить более сложную задачу. Нужно определить, можно ли в целом неотрицательном числе переставить цифры так, чтобы число стало делиться на 6. Например, в числе 123 цифры нужным образом переставить можно, а в числе 31 — нельзя. Составьте регулярное выражение для выполнения такой проверки.
Входные данные отсутствуют.
Выведите одну строку длиной не более 3000 символов, содержащую искомое регулярное выражение. В строке разрешается использовать только перечисленные выше символы.
Правильность вашего регулярного выражения будет проверяться на различных целых числах в диапазоне от $$$0$$$ до $$$10^9$$$ включительно (без ведущих нулей). Для проверки будет использоваться функция regex_match из библиотеки regex языка C++ (компилятор GCC). Время проверки не должно превышать одной секунды (в случае превышения будет возвращаться вердикт 'Неправильный ответ').
Для информации: в первом тесте проверяется число 123, во втором — 31.
Маленькая девочка Кристина приехала в гости к бабушке и увидела старинные механические часы, на циферблате которых было две стрелки — часовая и минутная. Часы исправно ходили, при этом перемещение стрелок у таких часов непрерывное (а не дискретное), то есть, например, за 1 минуту минутная стрелка равномерно перемещается на 6 градусов, а часовая — на 0.5 градуса. В момент наблюдения часы показывали ровно h часов, m минут, 0 секунд (то есть минутная стрелка указывала ровно на отметку m минут на циферблате). Например, часы на рисунке ниже показывают 8 часов 23 минуты и 0 секунд времени.
Кристине стало интересно, в какой ближайший к наблюдаемому момент времени показания часов будут таковы, что минимальный угол между стрелками составит ровно k градусов. Но так как она еще маленькая, то помочь ей решить эту задачу придётся вам.
В единственной строке входных данных заданы три целых числа — h, m и k ($$$0 \le h \le 11$$$, $$$0 \le m \le 59$$$, $$$0 \le k \le 180$$$).
Будем считать, что часы показывают время от 0 часов 0 минут до 11 часов 59 минут. После 11:59 снова следует 0:00.
В единственную строку выведите три числа — часы, минуты и секунды требуемого момента времени. При необходимости округлите время до целого числа секунд в меньшую сторону.
6 30 90
6 49 5
Некоторая тропическая республика представляет собой архипелаг, состоящий из нескольких (не менее двух) островов. Карта архипелага представляет собой матрицу $$$n \times m$$$, в которой символ '1' означает землю, а цифра '0' — воду. Любые две соседние по стороне клетки с символом '1' принадлежат одному острову.
Свежеизбранный президент республики в ходе предвыборной гонки обещал соединить все острова мостами. Теперь обещание нужно выполнять, но денег в стране немного. Поэтому он решил начать с возведения самого маленького моста. Определите, какое наименьшее число клеток нужно изменить с '0' на '1', чтобы какие-нибудь два острова (или более) соединились.
В первой строке записаны два целых числа $$$n$$$ и $$$m$$$ ($$$1\le n, m \le 10^6$$$, $$$n \cdot m \le 10^6$$$).
В следующих $$$n$$$ строках записано по $$$m$$$ символов '0' или '1' без пробелов. Гарантируется, что в матрице имеется не менее двух связных по стороне областей из единичных клеток.
Выведите одно целое число — ответ.
3 3 101 010 101
1
2 3 100 001
2
Вася считает сумму 2+22+202+2002+...20...02 и среди подряд идущих цифр получившегося результата хочет увидеть своё счастливое четырёхзначное число $$$N$$$. Помогите Васе определить, какое наименьшее количество слагаемых ему нужно взять, чтобы в десятичной записи такой суммы встретился фрагмент, совпадающий с его счастливым числом $$$N$$$.
Вводится целое число $$$N$$$ ($$$1000 \le N \le 9999$$$).
Выведите наименьшее количество слагаемых, сумма которых позволит Васе увидеть фрагмент в виде его счастливого числа, если это возможно, в противном случае выведите -1.
2230
5
2023
49005
На кружке электроники студенты разработали необычный калькулятор. Он отображает на экране не одно число, а сразу два, и поддерживает три вида команд:
Определите последовательность команд, чтобы получить из пары чисел (a, b) пару (c, d).
В первой строке записаны целые числа a и b, во второй строке — целые числа c и d ($$$-10^5 \le a, b, c, d \le 10^5$$$, $$$a \ne c$$$ или $$$b \ne d$$$).
Выведите одну строку, состоящую только из цифр 1, 2 и 3 без пробелов — номера команд. От вас не требуется, чтобы количество команд было минимальным, но оно не должно превышать $$$10^6$$$. В ходе вычислений не должны получаться числа больше $$$10^{18}$$$ по модулю.
Если решения нет, выведите "IMPOSSIBLE" (без кавычек, все буквы большие).
-3 5 3 2
231
3 6 2 3
IMPOSSIBLE
На доске прикреплены $$$N$$$ карточек, на каждой из которых записаны два целых числа — одно слева, другое справа. На обратной стороне одной из карточек написано слово "Приз".
В игре участвуют два игрока. Первому игроку ведущий шёпотом на ухо сообщает только левое число на призовой карточке, а второму игроку — только правое. Игрокам запрещено явным образом называть свои числа друг другу, но они могут давать подсказки. Если оба игрока отгадают нужную карточку, то они поделят приз между собой. При этом чем менее очевидными будут подсказки, тем ценнее приз им достанется.
Как-то раз на одной из игр между игроками случился следующий диалог:
После этого один из зрителей в зале воскликнул: "Я тоже знаю!". А вы сможете определить призовую карточку?
Первая строка входных данных содержит положительное целое число $$$N$$$ — количество карточек ($$$N \le 100$$$). Каждая из следующих $$$N$$$ строк содержит описание карточки — два целых числа от 1 до 100 через пробел, сначала левое, потом правое. Повторяющихся пар нет. Гарантируется, что ведущий, игроки и зритель говорят правду и не ошибаются.
Выведите два числа на карточке с призом — сначала левое, затем через пробел правое.
9 1 2 1 3 1 4 1 5 6 3 6 7 8 7 8 4 8 5
6 3
Возможно, вы знакомы со следующей известной задачей. Путешественник снял в гостинице комнату на неделю и предложил хозяину в уплату цепочку из семи серебряных колец — по кольцу за день, с тем, однако, условием, что будет рассчитываться ежедневно. Какое минимальное количество колец цепочки ему придётся разрезать?
Решение у этой задачи следующее. Оказывается, достаточно разрезать всего одно кольцо — третье. Тогда у путешественника будет три куска цепочки — из двух, одного и четырёх колец. В первый день он отдаст хозяину одно кольцо. Во второй день он отдаст кусок из двух колец и заберёт обратно кольцо, которое отдал в первый день, и так далее.
Вам предлагается решить эту задачу в общем виде. Пусть цепочка состоит из $$$N$$$ колец, и путешественник хочет жить в гостинице $$$N$$$ дней. Определите, какое наименьшее количество разрезов потребуется сделать, а также какие именно кольца разрезать.
Вводится одно целое число $$$N$$$ ($$$1 \le N \le 10^9$$$).
В первой строке выведите целое число $$$K$$$ — минимальное количество разрезов. В следующей строке выведите $$$K$$$ неповторяющихся целых чисел от 1 до $$$N$$$ — номера колец, которые нужно разрезать. Если есть несколько верных ответов, выведите любой.
7
1 3
8
2 2 4
Вам дан исходный код некоторой программы, для удобства он приведён на нескольких популярных языках программирования. Данная программа читает два целых числа $$$a$$$ и $$$n$$$ и затем выводит одно целое число — ответ.
При больших входных данных эта программа может работать довольно долго. Ваша задача — написать альтернативную программу, которая будет выдавать точно такие же ответы, но работать не более одной секунды при любых входных $$$a$$$ и $$$n$$$ в диапазоне от $$$0$$$ до $$$10^{18}$$$.
Текст на C++:
#include <iostream>
int main() {
long long a, n;
std::cin >> a >> n;
long long b = 0;
for (long long i = 0; i < n; i++) {
b = (b - a) & a;
}
std::cout << b << std::endl;
}
Текст на Python: a = int(input())
n = int(input())
b = 0
for _ in range(n):
b = (b - a) & a
print(b)
Текст на Java:
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
long a = in.nextLong();
long n = in.nextLong();
long b = 0;
for (long i = 0; i < n; i++) {
b = (b - a) & a;
}
System.out.println(b);
}
}
Текст на C#:
using System;
public class Solution {
static void Main() {
long a = long.Parse(Console.ReadLine());
long n = long.Parse(Console.ReadLine());
long b = 0;
for (long i = 0; i < n; i++) {
b = (b - a) & a;
}
Console.WriteLine(b);
}
}
Текст на Pascal:
var
a, b, n, i: int64;
begin
read(a, n);
b := 0;
i := 0;
while i < n do begin
b := (b - a) and a;
inc(i);
end;
writeln(b);
end.
Первая строка входных данных содержит целое число $$$a$$$, вторая строка содержит целое число $$$n$$$ ($$$0 \le a, n \le 10^{18}$$$).
Выведите одно целое число — ответ.
3 2
2
5 6
4
Предполагается, что отрицательные целые числа в памяти представляются в дополнительном коде как в большинстве популярных процессорных архитектур (включая архитектуру x86-64). В дополнительном коде отрицательное число $$$-x$$$ сохраняется в памяти как дополнение до двойки в степени числа разрядов, то есть $$$2^{64}-x$$$.
Заметим, что в языке Питон целые числа не ограничены фиксированной разрядностью. Но это не влияет на ответ, поэтому вы можете считать, что утверждение выше верно и для Питона.