Dada a entrada de um número inteiro positivo n
, escreva um programa que conclua o seguinte processo.
- Encontre o menor número inteiro positivo maior que
n
esse é um quadrado perfeito e é a concatenação den
e algum outro número. A ordem dos dígitos den
não pode ser alterada. O número concatenadon
para produzir um quadrado perfeito pode ser chamador_1
. - Se
r_1
não for um quadrado perfeito, repita o processo acima comr_1
a nova entrada para o processo. Repita até quer_k
seja um quadrado perfeito, denotados
. - Imprima o valor de
sqrt(s)
.
A entrada pode ser obtida em qualquer formato. Você pode assumir que n
é um número inteiro positivo. Se qualquer r_k
um tiver um zero inicial (e r_k
≠ 0), o zero poderá ser ignorado.
Casos de teste
Aqui estão alguns casos de teste. O processo demonstra as etapas acima.
Input: 23
Process: 23, 2304, 4
Output: 2
Input: 10
Process: 10, 100, 0
Output: 0
Input: 1
Process: 1, 16, 6, 64, 4
Output: 2
Input: 5
Process: 5, 529, 29, 2916, 16
Output: 4
Input: 145
Process: 145, 145161, 161, 16129, 29, 2916, 16
Output: 4
Input: 1337
Process: 1337, 13373649, 3649, 36493681, 3681, 368102596, 2596, 25969216, 9216
Output: 96
Isso é código de golfe. Aplicam-se regras padrão. A resposta mais curta (em bytes) vence.
while x**.5%1:
talvez?Python,
200198178 bytesfonte
math.sqrt
param
.Braquilog , 26 bytes
Experimente online!
O último caso de teste foi omitido no link TIO, porque leva apenas mais de um minuto para ser executado. Eu o executei no meu laptop e o resultado correto foi alcançado em não mais de duas horas.
O penúltimo
ℕ
é necessário para quando a entrada inicial já é um quadrado perfeito; portanto, o primeiro quadrado perfeito que o possui como prefixo é o próprio e!
é necessário para garantir que o retorno seja repetido em vez de encontrar um quadrado concatenado maior, mas realmente não sei por que≜
é necessário, apenas sei que 5 produz uma resposta errada sem ela.fonte
∧
é na verdade é mais curto do que usando um sanduíche.)Perl 6 , 101 bytes
fonte
ES7, 116 bytes
Sim, eu provavelmente poderia salvar um byte usando
eval
.fonte