Vamos definir o N potencial -exponential de um inteiro positivo M como a contagem de prefixos de M N que são perfeitos N -powers.
Os prefixos de um número inteiro são todas as subsequências contíguas de dígitos que começam com o primeiro, interpretadas como números na base 10. Por exemplo, os prefixos de 2744 são 2 , 27 , 274 e 2744 .
Um prefixo P é um perfeito N -power se existe um inteiro K de tal modo que K N = P . Por exemplo, 81 é uma potência de 4 perfeita porque 3 4 = 81 .
Dados dois inteiros estritamente positivos M e N , calcule o potencial N- exponencial de M de acordo com a definição acima.
Por exemplo, o potencial 2- exponencial de 13 é 3 porque 13 2 é 169 e 1 , 16 e 169 são todos quadrados perfeitos.
Casos de teste
Naturalmente, as saídas quase sempre são muito pequenas porque as potências são ... bem ... funções crescentes exponencialmente e ter vários prefixos de potência perfeita é bastante raro.
M, N -> Output
8499, 2 -> 1
4, 10 -> 2
5, 9 -> 2
6, 9 -> 2
13, 2 -> 3
4, 10
é 2 , porque 1 é uma potência 10 perfeita e 1048576 também é uma potência de 10 perfeita (enquanto 10 , 104 , 1048 , 10485 e 104857 não são). Portanto, existem 2 prefixos válidos, então a saída é 2. #Respostas:
Braquilog , 12 bytes
Experimente online!
Explicação
fonte
Gelatina , 10 bytes
Experimente online!
Como funciona
fonte
Haskell , 56 bytes
Experimente online!
Extrai os prefixos aritmeticamente por repetidos
\x->div x 10
. Tentei expressar a última linha sem pontos, mas não encontrei uma expressão mais curta.fonte
05AB1E , 8 bytes
Experimente online!
Usa o algoritmo de 10 bytes do Dennis Jelly. As entradas estão em ordem inversa.
fonte
Perl 5 , 38 bytes
Experimente online!
fonte
Haskell, 73 bytes
Experimente online!
fonte
Java (OpenJDK 9) , 105 bytes
Experimente online!
Créditos
fonte
.startsWith(""+(int)Math.pow(k,n))
pode ser.matches((int)Math.pow(k,n)+".*")
de -1 byte.Perl 6 , 40 bytes
Experimente online!
fonte
&foo
variável, poderá chamá-lo como faria com uma sub-rotinafoo( 'bar' )
oufoo 'bar'
sem a necessidade de incluir&
. Quer dizer que você não escrevê-lo como&say(&f(|$_))
(say
não é especial de qualquer forma)Gelatina , 14 bytes
Experimente online! ou veja a suíte de testes
Como funciona
fonte
APL (Dyalog) , 31 bytes
Experimente online!
fonte
Haskell , 83 bytes
Experimente online!
fonte
Ruby , 60 bytes
muito disso é lidar com erros de ponto flutuante
Experimente online!
fonte
Kotlin , 89 bytes
Experimente online!
Nos casos de teste, passamos n como valores duplos (2.0, 10.0, 9.0) para que eu não tenha que converter para o dobro ao chamar Math.pow ().
fonte
Python 2 ,
837170 bytesExperimente online!
Thx por 1 de ovs.
fonte
math.round()
lolGeléia , 9 bytes
Experimente online!
fonte