[LUG.ro] Problema de Josephus II
Horacio Castellini
lugro@lugro.org.ar
Thu, 20 Feb 2003 11:28:55 -0300 (ART)
A ver si este problema sacado de un libro les refresca la memoria a los
estudiantes de la tecnológica....
No lo envío a la lista de programación pues está más callada que el mudo
de Tumberos.
-------------------------------------------------------------------------------
Este problema tiene su origen en una leyenda sobre el
historiador Flavius Josephus en el primer siglo de nuestra era.
Durante las guerras judeo-romanas, N personas, entre
ellas Josephus y uno de sus amigos, se encontraron sitiadas en
una cueva. Prefiriendo morir a caer prisioneros
decidieron suicidarse pese a la opinión contraria de Josephus y su
amigo; para ello, formaron un círculo asignándose números
consecutivamente de 1 a N a partir de una persona
determinada. Contando a partir de la persona número 1, la
M-ésima persona se suicidó o fue ejecutada. Cerrando
nuevamente el círculo y comenzando a contar desde la
persona que seguía a la que fue ejecutada, al llegar al M-ésimo
lugar se ejecutó a esa persona. El proceso debía
repetirse hasta que sólo quedase una persona, quien debía suicidarse.
Josephus, sabiendo desde qué lugar se comenzaría a
contar, pudo determinar los lugares donde debían ubicarse él y su
amigo de manera ser los dos últimos sobrevivientes y
evitar así sus muertes. Por ejemplo,
para N = 8 y M = 4, el orden en que morirían es:
4 - 8 - 5 - 2 - 1 - 3 - 7 - 6
y para N = 9 y M = 5, el orden es:
5 - 1 - 7 - 4 - 3 - 6 - 9 - 2 - 8
Se trata entonces de escribir un programa que:
1- permita el ingreso de dos enteros positivos N y M.
2- determine el orden en que morirán las N personas,
mostrándolo en pantalla.
--------------------------------------------------------------------
Saludos Horacio