C. Три команды над битом
3000 мс · 256 МБ · всё или ничего
Как классная задача C, но команд три: установить бит, снять бит и инвертировать бит.
Все три — из одной таблицы, и различаются только операцией:
| команда | выражение |
|---|---|
| установить | A | (1ULL << i) |
| снять | A & ~(1ULL << i) |
| инвертировать | A ^ (1ULL << i) |
Полезно понимать, почему именно так. Логическое «или» с единицей всегда даёт единицу; логическое «и» с нулём всегда даёт ноль; исключающее «или» с единицей меняет значение. Во всех трёх случаях остальные биты не задеваются, потому что маска в них нулевая (а для «и» — единичная).
Формат ввода
Первая строка содержит число ().
Далее идут строк по три числа: команда ( — установить, — снять, — инвертировать), число () и номер бита ().
Формат вывода
строк с результатами.
Примеры
ввод
3 1 5 1 2 5 0 3 5 1
вывод
7 4 7
Войдите, чтобы отправлять решения.