En una biblioteca infantil se ha diseñado un sistema para
determinar cada día en qué orden elegirán los niños
el libro que desean leer. Para ello los bibliotecarios han decidido seguir la
siguiente estrategia: cada día se formará un círculo con
todos los niños. Uno de los niños es elegido al azar como el número
1 y el resto son numerados en orden creciente hasta N siguiendo el sentido de
las agujas del reloj.
Comenzando desde 1 y moviéndose en sentido horario uno
de los bibliotecarios cuenta k niños mientras el otro bibliotecario comienza
en N y se mueve en sentido antihorario contando m niños. Los dos niños
en los que se paren los bibliotecarios son elegidos; si los dos bibliotecarios
coinciden en el mismo niño, ese será el único elegido.
Cada uno de los bibliotecarios comienza a contar de nuevo en el siguiente niño
que permanezca en el círculo y el proceso continua hasta que no queda
nadie.
Tened en cuenta que los dos niños abandonan simultáneamente
el círculo, luego es posible que uno de los bibliotecarios cuente un
niño ya seleccionado por el otro.
Se pide la construcción de un programa que, dado el número
N de niños y los números k y m que utilizará cada bibliotecario
en la selección, indique en qué orden irán siendo seleccionados
los niños.
Entrada
Residente en el fichero de caracteres "BIBL.DAT": En
cada línea aparecerán tres números (N, k y m, los tres
mayores que 0 y menores que 20) separados por un único espacio en blanco
y sin blancos ni al comienzo ni al final de la línea. La última
línea del fichero contendrá siempre tres ceros.
Salida
A guardar en el fichero de caracteres "BIBL.OUT": Para
cada línea de datos del fichero de entrada (excepto, claro está,
la última que contiene tres ceros), se generará una línea
de números que especifique el orden en que serían seleccionados
los niños para esos valores de N, k y m. Cada número de la línea
ocupará tres caracteres en el fichero (no llevarán ceros a la
izquierda y serán completados con blancos por ese lado hasta alcanzar
ese tamaño). Cuando dos niños son seleccionados simultáneamente,
en el fichero aparecerá primero el elegido por el bibliotecario que cuenta
en sentido horario. Los grupos de elegidos (de uno o dos niños cada uno)
vendrán separados entre sí por comas (no debe ponerse una coma
después del último grupo).
Ejemplo de entrada
10 4 3
5 2 8
13 2 2
0 0 0
Ejemplo de salida
4 8, 9 5, 3 1, 2 6, 10, 7
2 3, 5, 4 1
2 12, 4 10, 6 8, 9 5, 13 1, 7, 3 11 |