Знаете ли вы, что небольшое число может позаимствовать биты у большего числа? Вот пример. Допустим, наши два числа 5 и 14. Сначала запишите их в двоичном виде:
5 14
000101 001110
Сначала мы берем наименьшее на бит от большего числа, и мы даем его наименьший от бита на другой номер. Так
This bit turns off
|
v
000101 001110
^
|
This bit turns on
Теперь у нас есть
000111 001100
и наши числа 7 и 12. Первое число все еще меньше, поэтому мы продолжим.
000111 001100
001111 001000
Теперь у нас 15 и 8, поэтому мы можем остановиться. Мы назовем этот набор операций «заимствование битов» двумя числами. Давайте сделаем еще один пример. 20 и 61.
20 61
010100 111101
010101 111100
010111 111000
111111 100000
63 32
Таким образом, наш конечный результат 32, 63. Давайте сделаем еще один . 31, а 12. 31 уже больше 12, так что ничего не поделаешь! Заимствование битов 31 и 12 дает 31 и 12, без изменений.
Соревнование
Ваша задача - написать программу или функцию, которая принимает два числа и заимствует их. Два числа всегда будут положительными целыми числами. Ваш ввод и вывод могут быть в любом разумном формате.
Тест IO:
Input: 2, 3
Output: 3, 2
Input: 3, 2
Output: 3, 2
Input: 8, 23
Output: 31, 0
Input: 42, 81
Output: 63, 0
Input: 38, 41
Output: 47, 32
Input: 16, 73
Output: 23, 0
Input: 17, 17
Output: 17, 17
Применяются стандартные лазейки, и выигрывает кратчайший ответ в байтах!