Problema H: Batota?


image platonic solids
Por vezes necessitamos de simular acontecimentos aleatórios no computador, por exemplo, para baralhar cartas. Em 1946, John von Neumann propôs o middle-square method para gerar sequências de números pseudo-aleatórios no intervalo [0,1[.

Parte-se de uma semente, que é um número inteiro positivo com 2n dígitos. Calcula-se o quadrado desse número; se tiver menos de 4n dígitos, acrescentam-se zeros à esquerda. Os 2n dígitos centrais definem o pseudo-aleatório resultante e a próxima semente.

Por exemplo, partindo de 1111, calculamos o seu quadrado, que é 1234321, e acrescentamos um zero para ter um número com 4n dígitos. Fica 01234321 e o pseudo-aleatório é 0,2343. Depois, partindo de 2343, calculamos o seu quadrado, que é 5489649, e temos de acrescentar um zero. Fica 05489649 e obtém-se 0,4896. Os pseudo-aleatórios seguintes seriam 0,9708 e 0,2452, como se ilustra abaixo.

Como o maior inteiro de 2n dígitos é 102n1, o seu quadrado é inferior a 104n e, por isso, 4n dígitos bastam para o representar, sendo, por vezes, todos necessários. Todas as sequências acabam por ter repetições, algumas muito rapidamente, como as que começam com 1001, 0020 ou 9800.

image explica H

Tarefa

Escreva um programa que, dados m, n e uma semente x com 2n dígitos, imprima a sequência dos m primeiros pseudo-aleatórios com 2n dígitos gerados por este método, partindo de x.

Input

A primeira linha tem dois inteiros positivos m e n, separados por um espaço. O primeiro é o número de pseudo-aleatórios a gerar. Segue-se uma linha com 2n inteiros (cada um entre 0 e 9), separados por um espaço, que são os dígitos da semente inicial x, lidos da esquerda para a direita.

Restrições

  1m20 Número de pseudo-aleatórios pedidos
  22n100 Número de dígitos na semente

Output

O output tem m linhas, uma por cada pseudo-aleatório gerado. Apresenta-os pela ordem em que foram calculados, sem espaços entre os dígitos e sempre com o prefixo "0," (sem aspas).

Exemplo 1

Input

6 2
1 1 1 1

Output

0,2343
0,4896
0,9708
0,2452
0,0123
0,0151

Exemplo 2

Input

4 2
0 0 2 0

Output

0,0004
0,0000
0,0000
0,0000

Exemplo 3

Input

5 1
5 2

Output

0,70
0,90
0,10
0,10
0,10

Exemplo 4

Input

7 2
9 8 0 0

Output

0,0400
0,1600
0,5600  
0,3600
0,9600
0,1600
0,5600

Exemplo 5

Input

3 18
9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 7 6 8 7 6

Output

0,999999999999753752000000000000000000  
0,000000060638077504000000000000000000  
0,976443381110870016000000000000000000



ToPAS'2023
193.136.122.94