Bạn có biết rằng một số nhỏ có thể mượn bit từ một số lớn hơn không? Đây là một ví dụ. Giả sử hai số 5 và 14. Đầu tiên, viết chúng ra dưới dạng nhị phân:
5 14
000101 001110
Đầu tiên chúng ta hãy nhỏ nhất trên chút xa số lượng lớn hơn, và chúng tôi đưa nó cho nhỏ đi chút vào số khác. Vì thế
This bit turns off
|
v
000101 001110
^
|
This bit turns on
Bây giờ chúng tôi có
000111 001100
và số của chúng tôi là 7 và 12. Số đầu tiên vẫn nhỏ hơn, vì vậy chúng tôi tiếp tục.
000111 001100
001111 001000
Bây giờ chúng tôi có 15 và 8, vì vậy chúng tôi có thể dừng lại. Chúng tôi sẽ gọi tập hợp hoạt động này là "vay mượn bit" hai số. Hãy làm một ví dụ khác. 20 và 61.
20 61
010100 111101
010101 111100
010111 111000
111111 100000
63 32
Vì vậy, kết quả cuối cùng của chúng tôi là 32, 63. Hãy làm thêm một lần nữa. 31 và 12. 31 đã lớn hơn 12, vì vậy không có gì để làm! Vay bit 31 và 12 cho 31 và 12, không thay đổi.
Các thách thức
Thử thách của bạn là viết một chương trình hoặc hàm lấy hai số và mượn chúng. Hai số sẽ luôn luôn là số nguyên dương. Đầu vào và đầu ra của bạn có thể ở bất kỳ định dạng hợp lý.
Kiểm tra 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
Áp dụng sơ hở tiêu chuẩn và câu trả lời ngắn nhất tính bằng byte!