Wussten Sie, dass eine kleine Anzahl Bits von einer größeren Anzahl ausleihen kann ? Hier ist ein Beispiel. Sagen wir unsere beiden Zahlen 5 und 14. Schreiben Sie sie zunächst binär auf:
5 14
000101 001110
Zunächst nehmen wir die kleinste auf etwas weg von der größeren Zahl, und wir geben es auf den kleinsten aus Bit auf der anderen Nummer. So
This bit turns off
|
v
000101 001110
^
|
This bit turns on
Jetzt haben wir
000111 001100
und unsere Zahlen sind 7 und 12. Die erste Zahl ist immer noch kleiner, also fahren wir fort.
000111 001100
001111 001000
Jetzt haben wir 15 und 8, damit wir aufhören können. Wir werden diese Menge von Operationen "Bit-Borrowing" zwei Zahlen nennen. Lassen Sie uns ein anderes Beispiel machen. 20 und 61.
20 61
010100 111101
010101 111100
010111 111000
111111 100000
63 32
Unser Endresultat ist also 32, 63. Lassen Sie uns noch eines tun . 31 und 12. 31 ist bereits größer als 12, es gibt also nichts zu tun! Bit-Ausleihe 31 und 12 ergibt 31 und 12, keine Änderung.
Die Herausforderung
Ihre Herausforderung besteht darin, ein Programm oder eine Funktion zu schreiben, die zwei Zahlen aufnimmt und diese ausleiht. Die beiden Zahlen sind immer positive ganze Zahlen. Ihre Eingabe und Ausgabe kann in jedem vernünftigen Format erfolgen.
Test 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
Es gelten Standardlücken und die kürzeste Antwort in Bytes gewinnt!