Dados raros P87793


Statement
 

pdf   zip

En este problema necesitarás números pseudo-aleatorios. Para generarlos, usa la fórmula yn=(75yn1)mod 65537,y_n = (75\cdot y_{n-1}) \ \text{mod } 65537, donde “mod\text{mod}” denota la operación de dividir y quedarse con el residuo de la división, y yny_n es el nn-ésimo número pseudo-aleatorio. El número inicial y0y_0 (la semilla) se te dará por la entrada. Por ejemplo, si y0=13y_0=13, los números que generarías serían y1=(7513)mod 65537=975,y2=(75975)mod 65537=7588,y3=(757588)mod 65537=44804,y4=(7544804)mod 65537=17913,y5=(7517913)mod 65537=32735,\begin{align*} y_1 &= (75\cdot 13) \ \text{mod } 65537 = 975, \\ y_2 &= (75\cdot 975) \ \text{mod } 65537 = 7588, \\ y_3 &= (75\cdot 7588) \ \text{mod } 65537 = 44804, \\ y_4 &= (75\cdot 44804) \ \text{mod } 65537 = 17913, \\ y_5 &= (75\cdot 17913) \ \text{mod } 65537 = 32735, \ldots \end{align*}

Se te pide que uses una secuencia de números pseudo-aleatorios para simular la tirada de un dado especial: el dado tiene NN caras (NN no es necesariamente 6), y cada cara contiene un número (que no son necesariamente los números del 11 al NN). Para saber qué cara corresponde a un cierto número pseudo-aleatorio yiy_i, deberás calcular (yimod N)+1(y_i\ \text{mod }N)+1 (el resultado es un número del 11 al NN).

Entrada

Una línea con el número n100n\leq 100 de casos. A continuación, nn líneas, una por caso. Cada línea contiene, separados por espacios, el número y0y_0 (la semilla), el número 1k1001\leq k\leq 100 de tiradas a efectuar, el número 1<N1001<N\leq 100 de caras del dado, y los NN números que aparecen en las NN caras del dado.

Salida

Para cada caso, tu programa debe escribir exactamente una línea de salida, con las kk tiradas del dado que se obtienen de los números y1y_1 hasta yky_k. 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

  • TestA:

    Resolver juegos de prueba como el del Ejemplo 1, donde se pide simular las tiradas de un único dado (n=1n=1) de 6 caras (N=6)(N=6) con los números 1,2,3,4,51, 2, 3, 4, 5 y 66, en este orden.

  • TestB:

    Resolver juegos de prueba de todo tipo.

Public test cases
  • 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.
    
  • Information
    Author
    Omer Giménez
    Language
    Spanish
    Official solutions
    C++
    User solutions
    C++