2.5 Побитовые операции

2.5.3 Проверить флаги

Условие

Каждый бит числа flags представляет независимый флаг: 1 означает, что флаг установлен, 0 — что сброшен. В числе mask единицами отмечены флаги, которые необходимо проверить.

Определите отдельно, установлен ли хотя бы один из отмеченных флагов и установлены ли все отмеченные флаги. Нулевая маска во входных данных не встречается. Используйте 32-битный unsigned int и побитовые операции. Перевод чисел в строки двоичных цифр не допускается.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Стандарты: C11 / C++17.

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

Два числа в одной строке: flags и mask. Ограничения: 0 ≤ flags ≤ 2³² − 1, 1 ≤ mask ≤ 2³² − 1.

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

Выведите две строки. В первой — YES, если установлен хотя бы один флаг из маски, иначе NO. Во второй — YES, если установлены все флаги из маски, иначе NO.

Примеры

Вход 1
10 2
Ожидаемый выход
YES
YES
Вход 2
10 6
Ожидаемый выход
YES
NO
Вход 3
8 3
Ожидаемый выход
NO
NO

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.