Чи знали ви, що невелика кількість може позичити біти з більшої кількості? Ось приклад. Скажімо, наші два числа 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
Застосовуються стандартні лазівки, і найкоротша відповідь у байтах виграє!