En este problema necesitarás números pseudo-aleatorios. Para generarlos, usa la fórmula
yn = (75· yn−1) mod 65537, |
donde “mod” denota la operación de dividir y quedarse con el residuo de la división, y yn es el n-ésimo número pseudo-aleatorio. El número inicial y0 (la semilla) se te dará por la entrada. Por ejemplo, si y0=13, los números que generarías serían
|
Se te pide que uses una secuencia de números pseudo-aleatorios para simular la tirada de un dado especial: el dado tiene N caras (N no es necesariamente 6), y cada cara contiene un número (que no son necesariamente los números del 1 al N). Para saber qué cara corresponde a un cierto número pseudo-aleatorio yi, deberás calcular (yi mod N)+1 (el resultado es un número del 1 al N).
Entrada
Una línea con el número n≤ 100 de casos. A continuación, n líneas, una por caso. Cada línea contiene, separados por espacios, el número y0 (la semilla), el número 1≤ k≤ 100 de tiradas a efectuar, el número 1<N≤ 100 de caras del dado, y los N números que aparecen en las N caras del dado.
Salida
Para cada caso, tu programa debe escribir exactamente una línea de salida, con las k tiradas del dado que se obtienen de los números y1 hasta yk. Separa dos números con una coma (sin espacios) y finaliza la línea con un punto. Si tu programa no produce los números en el formato descrito, no será considerado válido.
Puntuación
Resolver juegos de prueba como el del Ejemplo 1, donde se pide simular las tiradas de un único dado (n=1) de 6 caras (N=6) con los números 1, 2, 3, 4, 5 y 6, en este orden.
Resolver juegos de prueba de todo tipo.
Input
1 13 20 6 1 2 3 4 5 6
Output
4,5,3,4,6,5,5,5,5,2,5,2,3,1,6,4,1,1,3,4.
Input
4 999 10 8 1 2 3 4 5 6 7 8 13 20 2 0 1 12345 20 10 0 0 0 0 0 0 0 0 0 100 31839 10 5 -5 -1 0 1 5
Output
5,3,8,5,3,2,8,2,3,7. 1,0,0,1,1,0,0,0,0,1,0,1,0,0,1,1,0,0,0,1. 0,0,0,0,100,0,0,0,0,0,0,0,0,0,0,0,0,100,0,0. 1,-1,0,5,1,5,0,0,-1,5.