Na tej stronie jest pytanie podobne do tego pytania, ale dodałem zwrot.
Masz trzy dane wejściowe, liczbę osób w kręgu n , k-ta osoba odliczana na każdym kroku i q-ta osoba, która przeżyła. Ludzie w kręgu są ponumerowani od 1 do n .
Na przykład w kręgu 20 osób 20. osoba, która przeżyła, jest pierwszą usuniętą osobą, a 19. osoba, która przeżyła, to druga osoba usunięta i tak dalej. Zazwyczaj problemem Józefa Flawiusza jest określenie ostatniej osoby, która została usunięta, zwanej tutaj pierwszą osobą, która przeżyła.
Napisz najkrótszy program lub funkcję, która przy tych trzech wejściach zwraca liczbę q- tej osoby, która przeżyła.
Jeśli są jakieś problemy z jasnością, daj mi znać.
Kilka przykładów:
>>> josephus(20, 3, 9)
4
>>> josephus(4, 3, 1)
1
>>> josephus(100, 9, 12)
46
Edycja: Załóż, że wszystkie dane wejściowe są prawidłowe. To znaczy, że nikt nie poprosi o 0 lub jakiekolwiek liczby ujemne i nikt nie poprosi o 20. ocalałego w kręgu 5 osób (to znaczy 1 ≤ q ≤ n)
Edycja: Przyjmę odpowiedź o północy UTC + 7 na początku 2 grudnia.
q=1jest to dokładnie to samo, co powiązane pytanie Józefa, prawda?
