Saltar al contenido

El último del círculo

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):
    pass

JavaScript

function ultimoEnPie(n, k) {
}
Resolver este reto

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.

Más retos de O(n²)

Ver todos los retos →