Задача №114562. Ход гения
Стёпа — простой парень из мегаполиса, который только начал заниматься программированием. Прочитав рекомендации на никому неизвестном сайте в далёком уголке интернета, он решил начать изучение тем с прочтения разборов недавно прошедших олимпиад. Простые задачи показались ему совсем не интересными, его внимание привлекла неизвестная ему ранее структура под названием «дерево отрезков», и он решил плотно заняться её изучением.
Через пару дней он встретился со своим более опытным другом Вацлавом, который решил проверить его знания и дал ему следующую задачу.
Даны три числа \(a\), \(b\), \(k\). Найти два числа \(x\) и \(y\) (\(y \leq x\)), состоящие из \(a\) нулей и \(b\) единиц в двоичной системе счисления каждое, причём такие, что \(x - y\) в двоичной системе содержит в себе ровно \(k\) единиц. В \(x\) и \(y\) ведущие нули запрещены.
Напомним, что двоичная система счисления устроена аналогично десятичной. А именно, в данном случае число \(2\) — это основание системы счисления, любое неотрицательное целое число может быть записано цифрами со значениями \(0\) или \(1\). В такой записи, если у числа длина \(k\), и число имеет запись вида \(\overline{a_{k-1}a_{k-2}a_{k-3} \ldots a_1a_0}\), то величина числа равна \(a_0 + a_1 \cdot 2^1 + a_2 \cdot 2^2 + a_3 \cdot 2^3 + \ldots + a_{k-1} \cdot 2^{k - 1}\). При этом, если у числа длина больше 1, то старшая цифра не должна равняться 0, то есть, если \(k > 1\), то \(a_{k-1} > 0\). Но если длина равна 1, то число может состоять из единственной цифры \(0\).
Например, число \(20\) можно записать в двоичной системе счисления как \(20 = 10100_{2}\).
Стёпа все еще не верит, что такую задачу можно решить без использования продвинутых структур данных. Помогите ему решить её во что бы то ни стало!
В единственной строке заданы три целых числа \(a\), \(b\), \(k\) (\(1 \leq a + b \leq 200\, 000\), \(0 \leq a\), \(1 \leq b\), \(0 \leq k \leq a + b\)).
В первой строке выведите « Yes », если можно найти два подходящих числа или « No » в противном случае.
В случае, если ответ существует, во второй строке выведите число \(x\) в двоичной системе счисления, а в третьей строке выведите число \(y\) также в двоичной системе счисления.
Если возможных ответов несколько, то выведите любой.
В первом примере из условия \(x = 101000_2 = 2^5 + 2^3 = 40_{10}\), \(y = 100001_2 = 2^5 + 2^0 = 33_{10}\), \(40_{10} - 33_{10} = 7_{10} = 2^2 + 2^1 + 2^0 = 111_{2}\). Отсюда видно, что в \(x-y\) содержатся ровно \(3\) единицы.
Во втором примере из условия \(x = 10100_2 = 2^4 + 2^2 = 20_{10}\), \(y = 10010_2 = 2^4 + 2^1 = 18\), \(x - y = 20 - 18 = 2_{10} = 10_{2}\). Ровно одна единица.
В третьем примере из условия можно показать, что ответа нет.
В данной задаче \(50\) тестов, помимо тестов из условия, каждый из них оценивается в \(2\) балла. Результаты работы ваших решений на всех тестах будут доступны сразу во время соревнования.
Решения, корректно работающие при \(a + b \leq 10\), наберут не менее \(20\) баллов.
Решения, корректно работающие при \(a + b \leq 200\), наберут не менее \(40\) баллов.
Решения, корректно работающие при \(a + b \leq 3000\), наберут не менее \(50\) баллов.
Решения, корректно работающие при \(b \leq 20\), наберут не менее \(40\) баллов (включая \(20\) баллов за тесты, в которых выполнено \(a + b \leq 10\)).
Решения, корректно работающие при \(k \leq 20\), наберут не менее \(30\) баллов (включая \(20\) баллов за тесты, в которых выполнено \(a + b \leq 10\)).
Решения, корректно работающие только на тестах из условия и тестах с ответом « No », оцениваются в \(0\) баллов.
4 2 3
Yes 101000 100001
3 2 1
Yes 10100 10010
3 2 5
No