Há uma pergunta neste site que é semelhante a essa pergunta, mas eu adicionei uma reviravolta.
Você tem três entradas, o número de pessoas no círculo n , a k- ésima pessoa contada em cada etapa e a q-é a pessoa que sobrevive. As pessoas no círculo são numeradas de 1 a n .
Por exemplo, em um círculo de 20 pessoas, a 20ª pessoa a sobreviver é a primeira pessoa removida, o 19º sobrevivente é a segunda pessoa removida e assim por diante. Normalmente, o problema de Josephus é determinar a última pessoa removida, aqui chamada de primeiro sobrevivente.
Escreva o programa ou a função mais curta que, com essas três entradas, retorne o número da q- ésima pessoa a sobreviver.
Se houver algum problema com clareza, entre em contato.
Alguns exemplos:
>>> josephus(20, 3, 9)
4
>>> josephus(4, 3, 1)
1
>>> josephus(100, 9, 12)
46
Editar: Assuma que todas as entradas são válidas. Ou seja, ninguém pedirá zero ou nenhum número negativo e ninguém pedirá o vigésimo sobrevivente em um círculo de 5 pessoas (ou seja, 1 ≤ q ≤ n)
Edit: Aceito uma resposta à meia-noite UTC + 7 no início de 2 de dezembro.
q=1isso é exatamente o mesmo que a questão de Josephus, certo?
