El último del círculo
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- listas
- ciclos
- división
Enunciado
En el año 67, sitiados en una cueva, Flavio Josefo y sus soldados se sentaron en círculo para decidir por turnos quién salía. Cuentan que Josefo sabía en qué lugar sentarse para quedar al final.
Escribe una función que reciba n, cuántos soldados hay, y k, cada cuántos sale uno, los dos enteros mayores que 0. Los soldados van numerados del 1 al n alrededor del círculo, y después del n sigue el 1. El 1 dice "uno", el siguiente "dos", y el que dice k sale. El que sigue después de él vuelve a empezar en "uno", y así hasta que queda uno solo. Regresa su número, un entero.
Con n = 7 y k = 3 salen, en orden, el 3, el 6, el 2, el 7, el 5 y el 1: regresa 4. Si k es mayor que los que quedan, la cuenta da las vueltas que haga falta. Con k = 1 cada uno sale en cuanto dice "uno", así que queda el n. Con un solo soldado, regresa 1.
Ejemplos
El ejemplo
7, 3 → 4
Sale uno de cada dos
5, 2 → 3
Diez soldados, de dos en dos
10, 2 → 5
Con k igual a 1 queda el último
6, 1 → 6
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def ultimo_en_pie(n, k):
passJavaScript
function ultimoEnPie(n, k) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.