Có một câu hỏi trên trang web này tương tự như câu hỏi này, nhưng tôi đã thêm một nút thắt.
Bạn có ba đầu vào, số người trong vòng tròn n , người thứ k được tính ở mỗi bước và người thứ q sống sót. Những người trong vòng tròn được đánh số từ 1 đến n .
Ví dụ, trong một vòng tròn gồm 20 người, người thứ 20 sống sót là người đầu tiên bị loại bỏ, người sống sót thứ 19 là người thứ hai bị loại bỏ và cứ thế. Thông thường, vấn đề Josephus là xác định người cuối cùng bị loại bỏ, ở đây được gọi là người sống sót đầu tiên .
Viết chương trình hoặc hàm ngắn nhất, với ba đầu vào đó, trả về số người thứ q để tồn tại.
Nếu có bất kỳ vấn đề với sự rõ ràng, xin vui lòng cho tôi biết.
Vài ví dụ:
>>> josephus(20, 3, 9)
4
>>> josephus(4, 3, 1)
1
>>> josephus(100, 9, 12)
46
Chỉnh sửa: Giả sử tất cả các đầu vào là hợp lệ. Đó là không ai sẽ yêu cầu 0 hoặc bất kỳ số âm nào và sẽ không ai yêu cầu người sống sót thứ 20 trong một vòng tròn gồm 5 người (nghĩa là 1 ≤ q n)
Chỉnh sửa: Tôi sẽ chấp nhận câu trả lời vào nửa đêm UTC + 7 vào đầu ngày 2 tháng 12.
q=1điều này hoàn toàn giống với câu hỏi Josephus được liên kết, phải không?
