Codeforces Round 443 (Div. 1) |
---|
Закончено |
Петя выучил новый язык программирования CALPAS. Программа на этом языке всегда принимает на вход одно неотрицательное целое число и возвращает также неотрицательное целое число.
В языке есть только три команды: применить побитовую операцию AND, OR или XOR с данной константой к текущему числу. Программа может содержать произвольную последовательность таких операций с произвольными константами от 0 до 1023. При выполнении программы команды поочередно (в заданном порядке) применяются к аргументу, и возвращается последнее получившееся число.
Петя написал на этом языке программу, однако она получилась слишком длинной. Напишите программу на языке CALPAS, которая делает то же самое, что и Петина программа, и при этом состоит не более чем из 5 команд. Ваша программа должна возвращать тот же результат, что и Петина, для любого аргумента от 0 до 1023.
В первой строке находится целое число n (1 ≤ n ≤ 5·105) — количество команд.
В следующих n строках находятся команды. Команда состоит из символа, означающего операцию («&», «|» или «^» для операций AND, OR или XOR, соответственно) и константы xi (0 ≤ xi ≤ 1023), соответствующей этой операции.
Выведите число k (0 ≤ k ≤ 5) — длину вашей программы.
В следующих k строках выведите команды в том же формате, что и во входных данных.
3
| 3
^ 2
| 1
2
| 3
^ 2
3
& 1
& 3
& 5
1
& 1
3
^ 1
^ 2
^ 3
0
Вы можете прочитать про битовые операции в https://ru.wikipedia.org/wiki/Битовые операции.
Второй пример:
Пусть программа приняла на вход число x. Тогда результатом Петиной программы будет ((x&1)&3)&5 = x&(1&3&5) = x&1. Таким образом, результаты программ всегда совпадают.
Название |
---|