Ir al contenido (saltar navegación)

El teorema del punto fijo

Tiempo máximo: 1,000-2,000 sMemoria máxima: 4096 KiB
Taza de café

En la familia de teoremas matemáticos llamados del punto fijo, Brouwer estudió uno que, parece ser, explicaba con la analogía de remover una taza de café con azúcar. Brouwer afirmaba que en todo momento hay un punto/molécula de la taza que no habrá cambiado de lugar.

Nosotros no estudiaremos ese teorema, pero nos quedamos con la idea de que, al mover la taza de café, sus moléculas intercambian sus lugares para terminar en sitios completamente distintos. Por poner un ejemplo reducido (en el que ni siquiera se cumple el teorema del punto fijo), la molécula 1 podría haber pasado a ocupar el lugar que tenía la molécula 2, la molécula 2 pasar donde estaba la molécula 3, y la molécula 3 ocupar el lugar que originalmente tenía la 1.

Ejemplo de movimiento de taza de café con tres moléculas

Si somos capaces de replicar el mismo movimiento una y otra vez, llega un momento en el que la taza de café vuelve a su estado original:

Ejemplo de ciclo completo de movimientos

La pregunta que nos hacemos es, dada la descripción del intercambio de moléculas que conseguimos con el movimiento de la taza de café, ¿cuántas veces tendremos que repetirlo para que el estado de la taza vuelva a ser el mismo que al principio?

Entrada

La entrada estará compuesta por distintos casos de prueba. Cada uno de ellos consta de dos líneas, una primera con el número de moléculas en la taza de café (1 ≤ n ≤ 100) y otra indicando qué movimiento de moléculas se realizan cada vez que se mueve la taza.

El movimiento viene definido con n enteros que indican, para cada posición de una molécula, en qué posición termina la molécula que ocupaba ese lugar.

La entrada termina con una taza de café sin moléculas, que no debe procesarse.

Salida

Para cada caso de prueba se escribirá el número de veces que hay que mover la taza de café para que cada molécula recupere su lugar original. Se garantiza que el número no excederá 109.

Entrada de ejemplo

3
1 2 3
3
2 3 1
4
2 1 4 3
0

Salida de ejemplo

1
3
2