| Условие задачи | | Прогресс | Попытки, все/успешные |
|
Темы:
Битовые операции
Двумерные массивы
Дата и время
Циферблат новых электронных часов, установленных на главном здании офиса фирмы Macrohard, состоит из 4 прямоугольных панелей, каждая из которых состоит из 6 рядов по 5 лампочек в каждом. Первые две панели отображают цифры, из которых складываются часы, а следующие две - минуты. (Если сейчас меньше 10 часов, первая панель отображает 0).
К сожалению, лампочки, установленные на панелях, были произведены компанией Sveta.Net, которая известна своим принципом , вследствие чего на следующий день люди, проходя мимо офиса компании, видели лишь некоторое подобие цифр, поскольку некоторые лампочки больше не горели.
Петя живет в доме, стоящем прямо напротив офиса компании Macrohard. В первый день после установки часов он зарисовал у себя в блокноте, как выглядят все цифры на панелях (панели однотипные, поэтому одна и та же цифра на различных панелях выглядит одинаково). Теперь Петя хочет узнать, можно ли по текущему изображению на часах однозначно определить, сколько сейчас времени. Помогите ему!
Входные данные
Входные данные содержат 6 строк по 20 символов в каждой - текущее изображение на часах. Первый прямоугольник задает первую панель, следующий - вторую, следующий - третью и последний - четвертую.
Выходные данные
Если можно точно определить время, которое сейчас отображается на часах, выведите это время в формате hh:mm. Если время нельзя определить однозначно, выведите AMBIGUITY. Если же в часах точно сломалось еще что-то, например, центральный процессор, который управляет лампочками, выведите ERROR.
| |
|
2/
1
|
|
Темы:
meet in the middle
Битовые операции
Дана таблица \(A\) из \(h\) строк и \(w\) столбцов, в каждой ячейке которой записано целое число. Строки пронумерованы от \(1\) до \(h\) сверху вниз, столбцы пронумерованы от \(1\) до \(w\) слева направо.
Разрешается применять к этой таблице следующие операции:
Эти операции разрешается применить произвольное число раз в любом порядке.
Определите, возможно ли при помощи этих операций получить из исходной таблицу с суммой чисел, равной заданному числу \(s\), и если да, то какие операции и в каком порядке необходимо применить.
Формат входных данных
Первая строка ввода содержит числа \(h\) и \(w\) — размеры таблицы (\(1 \leq h, w \leq 15\)).
Каждая из следующих \(h\) строк содержит по \(w\) целых чисел — таблицу \(A\) (\(0 \leq A_{i,j} \leq 10^{9}\)).
В последней строке ввода находится число \(s\) — необходимая сумма (\(1 \leq s \leq 10^{18}\)).
Формат выходных данных
Если получить таблицу с суммой чисел \(s\) из исходной невозможно, выведите строку <<NO>>.
Иначе:
-
В первой строке выведите строку <<YES>>.
-
Во второй строке выведите единственное число \(k\) — количество операций с таблицей, которые необходимо применить, чтобы получить из неё таблицу с суммой чисел \(s\).
-
В каждой из следующих \(k\) строк выведите по два целых числа \(t_{j}, i_{j}\), где \(t_{j} = 1\), если очередная операция производится со строкой, и \(t_{j}=2\), если она производится со столбцом таблицы. Число \(i_{j}\) должно быть равно номеру строки или столбца, соответственно, в исходной нумерации, с которой эта операция производится.
В первом примере изначально дана следующая таблица:
\(\begin{array}{|c|c|c|} \hline 1 & 2 & 3 \\ \hline 2 & 3 & 1 \\ \hline 3 & 1 & 2 \\ \hline \end{array}\)
Удалив третьи строку и столбец получим таблицу с суммой чисел \(8\):
\(\begin{array}{|c|c|c|} \hline 1 & 2 & 3 \\ \hline 2 & 3 & 1 \\ \hline 3 & 1 & 2 \\ \hline \end{array} \to \begin{array}{|c|c|c|} \hline 1 & 2 & 3 \\ \hline 2 & 3 & 1 \\ \hline \end{array} \to \begin{array}{|c|c|} \hline 1 & 2 \\ \hline 2 & 3 \\ \hline \end{array}\)
Во втором примере можно показать, что разрешенными операциями невозможно получить таблицу с суммой чисел \(5\) из исходной.
В третьем примере изначально дана таблица:
\(\begin{array}{|c|c|c|c|c|} \hline 1 & 2 & 1 & 4 & 5 \\ \hline 2 & 5 & 4 & 1 & 2 \\ \hline 4 & 2 & 4 & 3 & 1 \\ \hline 5 & 5 & 3 & 2 & 4 \\ \hline 1 & 2 & 4 & 5 & 2 \\ \hline \end{array}\)
Удалив последние две строки и первый столбец, получим таблицу с суммой чисел \(34\):
\(\begin{array}{|c|c|c|c|c|} \hline 1 & 2 & 1 & 4 & 5 \\ \hline 2 & 5 & 4 & 1 & 2 \\ \hline 4 & 2 & 4 & 3 & 1 \\ \hline 5 & 5 & 3 & 2 & 4 \\ \hline 1 & 2 & 4 & 5 & 2 \\ \hline \end{array} \to \begin{array}{|c|c|c|c|c|} \hline 1 & 2 & 1 & 4 & 5 \\ \hline 2 & 5 & 4 & 1 & 2 \\ \hline 4 & 2 & 4 & 3 & 1 \\ \hline 5 & 5 & 3 & 2 & 4 \\ \hline \end{array} \to \begin{array}{|c|c|c|c|c|} \hline 1 & 2 & 1 & 4 & 5 \\ \hline 2 & 5 & 4 & 1 & 2 \\ \hline 4 & 2 & 4 & 3 & 1 \\ \hline \end{array} \to \begin{array}{|c|c|c|c|} \hline 2 & 1 & 4 & 5 \\ \hline 5 & 4 & 1 & 2 \\ \hline 2 & 4 & 3 & 1 \\ \hline \end{array}\)
| |
|
40/
3
|
|
Темы:
Битовые операции
Для заданного целого числа со знаком num найдите его внутренее представление в памяти компьютера в шестнадцатеричной системе счисления (в 32-разрядной сетке).
Входные данные
Программа получает на вход целое число num (-231 <= num <= 231 - 1).
Выходные данные
Выведите одну строку - ответ на задачу. Все буквы в строке ответа должны быть строчными английскими, и в ответе не должно быть никаких ведущих нулей, кроме самого нуля.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
26
|
1a
|
| 2 |
-1
|
ffffffff
|
| |
|
54/
25
|
|
Темы:
Битовые операции
Расстояние Хэмминга между двумя целыми числами - это количество позиций, в которых соответствующие биты различаются.
Для заданных двух целых чисел x и y, найдите расстояние Хэмминга между ними.
Входные данные
Программа получает на вход два целых числа x и y. Каждое число записано в отдельной строке.
Ограничения
Выходные данные
Выведите ответ на задачу.
Примеры
| № |
Входные данные |
Выходные данные |
Примечание |
| 1 |
1
4
|
2
|
1 (0 0 0 1)
4 (0 1 0 0)
|
| |
|
25/
16
|
|
Темы:
Битовые операции
Магистр Максимус создал массив из n неотрицательных целых чисел, но чтобы сохранить его в тайне, он преобразовал его в другой массив encoded длиной n-1. Каждый элемент encodedi был получен путем выполнения операции XOR над двумя соседними элементами arr[i] и arr[i+1]. Например, если исходный массив arr = [1,0,2,1], то полученный массив encoded = [1,2,3].
Теперь Магистр Максимус хочет передать эту тайну другому волшебнику, но ему нужно вернуться к исходному массиву arr. Однако у него есть подсказка - первый элемент arr равен first.
Помогите Магистру Максимусу восстановить исходный массив arr! Мы уверены, что ответ существует и является уникальным. Расшифруйте тайну и восстановите массив arr.
Входные данные
Программа получает на вход в первой строке число n - количество элементов исходного массива. Вторая строка содержит n-1 число encodedi - элементы закодированного массива.
Ограничения
2 <= n <= 104
Длина массива encoded == n - 1
0 <= encodedi <= 105
0 <= first <= 105
Выходные данные
Выведите n чисел в однй строку через пробел - элементы исходного массива arr.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
4
1 2 3
1
|
1 0 2 1
|
| 2 |
5
6 2 7 3
4
|
4 2 0 7 4
|
| |
|
72/
40
|
|
Темы:
Битовые операции
Когда-то давно, в мире чисел произошло необычное событие. Числа начали обретать новое свойство - свойство "установленных битов". Если представить число в двоичной системе, то установленные биты - это цифры, которые равны единице.
Ваш задача заключается в том, чтобы подсчитать сумму элементов в массиве nums, чьи индексы содержат ровно k таких установленных битов.
Входные данные
Программа получает на вход в первой строке число n - количество элементов в массиве nums. Во второй строке записаны n чисел numsi - элементы массива. В третьей строке записано число k.
Ограничения:
1 <= n <= 1000
1 <= nums[i] <= 105
0 <= k <= 10
0 <= i < n
Выходные данные
Выведите ответ на задачу.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5
5 10 1 5 2
1
|
13
|
| 2 |
4
4 3 2 1
2
|
1
|
| |
|
24/
12
|
|
Темы:
Битовые операции
Два числа a и b записаны в двоичной системе счисления. Запись обоих имеет длину 2n. Обе записи разбиты на n блоков по 2 стоящие рядом цифры. В каждом из чисел вы можете сколько угодно раз менять два произвольных блока местами. Какое максимальное значение может быть у результата применения побитовой операции XOR к получившимся числам?
Определим операцию побитового исключающего «ИЛИ» (XOR). Пусть даны два целых неотрицательных двоичных числа x и y длины k (возможно с ведущими нулями): xk-1...x2x1x0 и yk-1...y2y1y0. Здесь xi это i-й бит числа x, а yi это i-й бит числа y. Пусть r = x XOR y - результат операции XOR над числами x и y. Тогда двоичной записью r будет rk-1...r2r1r0, где:
\(r_i = \begin{cases} 1, ~ \text{если} ~ x_i ~ \neq ~ y_i \\ 0, ~ \text{если} ~ x_i ~ = ~ y_i \end{cases}\)
Входные данные
В первой строке содержится одно целое число n (1 <= n <= 100000) - количество блоков по две цифры в записях обоих числах. Во второй строке задана запись числа a. В третьей строке задана запись числа b.
Для удобства блоки разделены символом «|».
Выходные данные
В единственной строке вам необходимо вывести одно двоичное число из n блоков, которое является ответом на задачу, в таком же блочном формате, в каком заданы числа a и b.
Примечание
В первом примере можно поменять два соседних блока в первом числе, получится 11|00 XOR 00|10=11|10.
Во втором примере любая перестановка цифр не меняет a XOR b. Обратите внимание, что длина выводимого числа должна состоять из n блоков, поэтому надо выводить блоки из лидирующих нулей.
В третьем примере можно получить 101001 из a и 010100 из b.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
2
00|11
00|10
|
11|10
|
| 2 |
3
00|00|00
00|00|00
|
00|00|00
|
| 3 |
3
10|10|01
00|01|01
|
11|11|01
|
| |
|
4/
1
|
|
Темы:
Битовые операции
Дано число, сбросьте младший ненулевой бит (т.е. первую справа единицу замените на ноль).
Запрещается использовать ветвления и циклы.
Входные данные
Одно неотрицательное число a.
Выходные данные
Выведите результирующее число.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
1 |
0 |
| 2 |
5 |
4 |
| |
|
105/
70
|
|
Темы:
Битовые операции
Дано число, замените младший нулевой бит (первый справа ноль) на единицу.
Запрещается использовать ветвления и циклы.
Входные данные
На вход программа получает неотрицательное число a.
Выходные данные
Выведите результирующее число.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
0 |
1 |
| 2 |
5 |
7 |
| |
|
104/
49
|
|
Темы:
Битовые операции
Даны числа a и b. Не используя операции *, /, //, % вычислите их произведение.
Входные данные
Даны два числа a и b.
Выходные данные
Выведите произведение чисел a и b.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 2 |
10 |
| |
|
57/
37
|
|
Темы:
Битовые операции
Напишите программу, которая выводит все биты 8-битного числа N.
Входные данные
Дано целое число N (0 <= N <= 255).
Выходные данные
Выведите число N в битовой форме: 8 бит, старшие биты слева, младшие – справа.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5
|
00000101
|
| |
|
171/
70
|
|
Темы:
Битовые операции
Напишите программу, которая определяет значение k-го бита числа N.
В программе нельзя использовать арифметические операции, необходимо использовать только битовые операции!
Входные данные
Дано целое число N и натуральное число k.
Выходные данные
Выведите на экран значение заданного бита (0 или 1).
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 1 |
0 |
| |
|
240/
98
|
|
Темы:
Битовые операции
Напишите программу, которая сбрасывает (устанавливает 0) все биты числа N кроме последних k битов. Выведите на экран полученное число.
В программе нельзя использовать арифметические операции, необходимо использовать только битовые операции!
Входные данные
Дано целое число N и натуральное число k.
Выходные данные
Выведите на экран число, полученное после сбрасывания битов.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 1 |
1 |
| |
|
229/
88
|
|
Темы:
Битовые операции
Напишите программу, которая сбрасывает (устанавливает 0) k-й бит числа N. Выведите на экран полученное число.
В программе нельзя использовать арифметические операции, необходимо использовать только битовые операции!
Входные данные
Дано целое число N (N<109) и натуральное число k (k<109).
Выходные данные
Выведите на экран число, полученное после сбрасывания заданного бита.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 2 |
1 |
| |
|
190/
94
|
|
Темы:
Битовые операции
Напишите программу, которая инвертирует k-й бит числа N. Выведите на экран полученное число.
В программе нельзя использовать арифметические операции, необходимо использовать только битовые операции!
Входные данные
Дано целое число N и натуральное число k.
Выходные данные
Выведите на экран число, полученное после инвертирования заданного бита.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 2 |
1 |
| |
|
190/
100
|
|
Темы:
Битовые операции
Напишите программу, которая устанавливает 1 в k-й бит числа N. Выведите на экран полученное число.
В программе нельзя использовать арифметические операции, необходимо использовать только битовые операции!
Входные данные
Дано целое число N и натуральное число k.
Выходные данные
Выведите на экран число, полученное после установки в 1 заданного бита.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 1 |
7 |
| |
|
190/
105
|
|
Темы:
Битовые операции
Громозека записал на листочек n чисел ai. Затем он выполняет над массивом следующую операцию
- выбирает два различных целых числа
i, j (1 <= i < j <= n) и заменяет ai на x и aj на y. Чтобы не нарушать массив, Громозека следить чтобы выполнялось условия ai|aj=x|y, где | обозначает побитовое ИЛИ. Заметьте, что x и y это целые неотрицательные числа.
Громозека хочет определить минимальную сумму элементов массива, которую он может получить после выполнения вышеуказанной операции любое количество раз. Так как Громозека должен как можно быстрее отправиться в очередное космическое путешествие, он просит у вас помощи!
Входные данные
Первая строка входных данных содержит целое число n (2 <= n <= 100) - количество чисел, которые записал Громоезка на листочке. Вторая строка входных данных содержит n целых чисел a1,a2,…,an (0<=ai<=230).
Выходные данные
Выведите минимальную возможную сумму массива.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
3
1 3 2
|
3
|
| 2 |
5
1 2 4 8 16
|
31
|
| 3 |
2
6 6
|
6
|
| 4 |
3
3 5 6
|
7
|
| |
|
76/
39
|
ID 44570.
2^k
Темы:
Битовые операции
Напишите программу, которая по заданному числу k (0 <= k <= 31) выводит на экран число 2k, то есть число, у которого k-й бит равен 1, а остальные - нули.
В программе нельзя использовать арифметические операции, необходимо использовать только битовые операции!
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
5 |
32 |
| |
|
195/
115
|
|
Темы:
Битовые операции
Два числа a и b записаны в шестнадцатеричной системе счисления. Запись обоих имеет длину n. Вы можете сколько угодно раз менять две соседние цифры местами в любом из чисел. Какое максимальное значение может быть у результата применения побитовой операции XOR к получившимся после применения таких перестановок числам?
Эта операция определена над двоичным представлением чисел.
Определим операцию побитового исключающего «ИЛИ» (XOR). Пусть даны два целых неотрицательных двоичных числа x и y длины k (возможно с ведущими нулями): xk-1...x2x1x0 и yk-1...y2y1y0. Здесь xi это i-й бит числа x, а yi это i-й бит числа y. Пусть r = x XOR y - результат операции XOR над числами x и y. Тогда двоичной записью r будет rk-1...r2r1r0, где:
\(r_i = \begin{cases} 1, ~ \text{если} ~ x_i ~ \neq ~ y_i \\ 0, ~ \text{если} ~ x_i ~ = ~ y_i \end{cases}\)
Входные данные
В первой строке содержится одно целое число n (1 <= n <= 100000) - длина записи чисел. Во второй строке задана запись числа a. В третьей строке задана запись числа b.
Буквы A, B, C, D, E, F отвечают за цифры 10, 11, 12, 13, 14, 15 в шестнадцатеричной системе счисления соответсвенно. Записи могут содержать ведущие нули.
Выходные данные
В единственной строке вам необходимо вывести одно шестнадцатеричное число длины n, которое является ответом на вопрос из условия.
Примечание
В первом примере можно поменять две соседние цифры в первом числе, получится F0 XOR 0E = FE.
Во втором примере любая перестановка цифр не меняет a XOR b. Обратите внимание, что длина выводимого числа должна быть равна n, поэтому надо выводить лидирующие нули.
В третьем примере можно получить 101010 из a и 010100 из b.
Примеры
| № |
Входные данные |
Выходные данные |
| 1 |
2
0F
0E
|
FE
|
| 2 |
3
000
000
|
000
|
| 3 |
6
010110
011000
|
111110
|
| |
|
13/
6
|
|
Темы:
Битовые операции
Волшебник ORZ любит колдовать над числами. Вы решили проверить его силу и дали ему массив a, состоящий из n целых чисел, а также целое число z. Нумерация элементов массива начинается с 1.
Волшебник ORZ проделывает следующую операцию любое количество (возможно, ноль) раз:
- Он выбирает целое число
i, такое что 1<= i <= n. Затем он шепчет заклинание и после этого одновременно число ai превращается в число равное (ai or z), а число z превращается в число, равное (ai and z).
Здесь or и and обозначают операции побитового ИЛИ и побитового И соответственно.
Найдите максимально возможное значение максимального элемента в массиве a после некоторого (возможно, нулевого) количества превращений.
Входные данные
Первая строка набора входных данных содержит два целых числа: n и z (1 <= n <= 2000, 0 <= z < 230). Вторая строка набора входных данных содержит n целых чисел: a1, a2,...,an (0 <= ai < 230). Гарантируется, что сумма значений n по всем наборам входных данных не превосходит 104.
Выходные данные
Выведите ответ на задачу.
Примеры
| № |
Входные данные |
Выходные данные |
Примечание |
| 1 |
2 3
3 4 |
7 |
Одной из оптимальных последовательностей действий является следующая:
- Выполнить операцию для
i = 1. Теперь a1 становится равным (3 or 3) = 3, а z становится равным (3 and 3) = 3.
- Выполнить операцию для
i = 2. Теперь a2 становится равным (4 or 3) = 7,, а z становится равным (3 and 3) = 0.
- Выполнить операцию для
i = 1. Теперь a1 становится равным (3 or 0) = 3, а z становится равным (3 and 0) = 0.
После этих операций последовательность a становится равной [3,7], и максимальное значение в ней равно 7. Можно доказать, что максимальное значение в a не может превосходить 7 ни при какой последовательности операций, так что ответ равен 7.
|
| 2 |
5 5
0 2 4 6 8 |
13 |
|
| |
|
55/
19
|
|