Dados raros P87793


Statement
 

pdf   zip

html

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

     
y1= (75· 13)  mod  65537 = 975,          
y2= (75· 975)  mod  65537 = 7588,          
y3= (75· 7588)  mod  65537 = 44804,          
y4= (75· 44804)  mod  65537 = 17913,          
y5= (75· 17913)  mod  65537 = 32735, …          

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

  • TestA:  35 puntos Puntos 

    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.

  • TestB:  65 puntos Puntos 

    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++