Introdução
O método do quadrado médio é usado para a geração de números pseudo-aleatórios. No entanto, na prática, esse não é um bom método, pois seu período geralmente é muito curto e apresenta algumas deficiências graves. Como é que isso funciona? Vamos dar um exemplo:
Para a semente, escolhemos 123456
:
Seed 123456
A semente ao quadrado (semente × semente) é igual a:
Seed² 15241383936
Começamos com um número de 6 dígitos . Isso significa que a semente ao quadrado deve fornecer um número de 12 dígitos . Se não for esse o caso, os zeros à esquerda são adicionados para compensar:
Seed² 015241383936
Pegamos então a parte do meio do número, com o mesmo tamanho da semente:
Seed² 015241383936
^^^^^^
Esta é então a nossa nova semente : 241383
. Repetimos o mesmo processo como mostrado acima. Temos o seguinte:
0: 123456
015241383936
| |
1: 241383
058265752689
| |
2: 265752
070624125504
| |
3: 624125
389532015625
| |
4: 532015
283039960225
| |
5: 039960
001596801600
| |
6: 596801
E isso continua por um tempo ... Agora que sabemos qual é o método do meio do quadrado, vamos ao desafio:
A tarefa
Toda semente tem um período . O período de uma semente de n dígitos não pode ser maior que 8 n . Por exemplo, a semente 82
. Isso daria a seguinte sequência:
82 > 72 > 18 > 32 > 02 > 00 > 00 > 00 > 00 > 00
|____|____|____|____|____|____|____|____|____|___...
0 1 2 3 4 5 6 7 8 9
Você pode ver que o período é igual a 5 , antes de conter o mesmo dígito novamente. Sua tarefa é, quando uma semente maior que 0 não contém zeros à esquerda, gera o período da semente . Portanto, neste caso, você precisa produzir 5
.
Outro exemplo é 24
:, que fornece o seguinte:
24 > 57 > 24
|____|____|___...
0 1 2
Como você pode ver, nem todas as seqüências terminam 0
. Este ciclo tem um período de 1 .
Casos de teste
Input > Output
24 > 1
82 > 5
123456 > 146
8989 > 68
789987 > 226
Os pastebins com as sequências para 123456 , 8989 , 789987
Isso é código-golfe , então a submissão com a menor quantidade de bytes ganha!
Você pode assumir que a entrada nunca terá um número desigual de dígitos.
24
é periódico (com o período 2, eu diria),82
é eventualmente periódico (com o período 1).