
countUnlockingEntries
Bạn An ngày đầu đi làm bảo vệ tại một khu chung cư gồm n
phòng được giao cho một chùm có k
chìa khóa (k ≥ n)
. Tuy nhiên chùm chìa khóa đã bị mất nhãn (không rõ chìa khóa này mở được cửa phòng nào) nên An phải đi mở khóa cửa của từng phòng một để gán lại nhãn cho chùm chìa khóa (chỉ những chìa dùng để mở cửa phòng).
Hãy tính số lượt thử tối đa để An có thể gán lại nhãn cho chùm chìa khóa. Biết trong chùm chìa khóa luôn có chìa khóa của từng phòng một và An sẽ không thử 1 chìa khóa vào 1 cửa phòng nhiều hơn 1 lần.
Ví dụ:
- Với
n = 2, k = 2
thìcountUnlockingEntries(n, k) = 1
Giải thích: Bạn An chỉ cần thử tối đa 1 chìa để mở cửa phòng số 1, nếu chìa đó không mở được cửa thì chắc chắn chìa đó dùng để mở cửa số 2, chìa còn lại dùng để mở cửa phòng số 1.
- Với
n = 3, k = 4
thìcountUnlockingEntries(n, k) = 6
Đầu vào/Đầu ra:
- [Giới hạn thời gian chạy] 0.1 giây với C++, 0.6 giây với java và C#, 0.8 giây với Python, Go và JavaScript.
- [Đầu vào] Long n, k
1 ≤ n ≤ k ≤ 1010
- [Đầu ra] Long
Số lượt thử tối đa để An có thể gán lại nhãn cho chùm gồmk
chìa khóa.
Post Comment