Đề bài
Mỗi lượt, bạn lấy hai xu từ một chồng và một xu từ chồng còn lại. Có thể chọn bất kỳ chiều nào. Không bao giờ được lấy nhiều xu hơn số còn lại trong chồng. Hãy xác định liệu cả hai chồng có thể cùng về 0 hay không.
Cài đặt hàm coin_piles(left, right).
Đầu vào
left: Số xu trong chồng bên trái.
right: Số xu trong chồng bên phải.
Đầu ra
Trả về true nếu có thể làm rỗng cả hai chồng; ngược lại trả về false.
Ràng buộc
0 ≤ left, right ≤ 1.000.000.000. Hai chồng đã rỗng được xem là kết quả thành công.
Ví dụ
Đầu vào:
left = 4
right = 2
Kết quả mong đợi:
expected = True
Đầu vào:
long long left = 4;
long long right = 2;
Kết quả mong đợi:
bool expected = true;
Đầu vào:
long left = 4;
long right = 2;
Kết quả mong đợi:
bool expected = true;
Giải thích
Lấy (2, 1) hai lần: (4, 2) → (2, 1) → (0, 0).
Đầu vào:
left = 4
right = 1
Kết quả mong đợi:
expected = False
Đầu vào:
long long left = 4;
long long right = 1;
Kết quả mong đợi:
bool expected = false;
Đầu vào:
long left = 4;
long right = 1;
Kết quả mong đợi:
bool expected = false;
Giải thích
Nước đi duy nhất đầu tiên để lại (2, 0), sau đó không còn cách nào để làm rỗng chồng bên trái.
Hướng tiếp cận
Hãy tự thử trước, sau đó mở từng gợi ý một.
Gợi ý 1
Mỗi lượt lấy đi đúng 3 đồng xu tổng cộng, nên tổng số xu phải khớp với mẫu đó.
Gợi ý 2
Không cọc nào được giảm xuống dưới 0, nên một cọc không thể lớn hơn mức cọc kia có thể hỗ trợ.
Gợi ý 3
Hãy kiểm tra cả tổng số lẫn hiệu giữa hai cọc.
Độ phức tạp mong đợi
thời gian O(1), bộ nhớ phụ O(1)
Tham khảo
Thử thách này đã được điều chỉnh cho CodeUtility. Hãy làm theo đề bài và các ràng buộc ở trên.