При вводе положительного целого числа n
напишите программу, которая завершает следующий процесс.
- Найдите наименьшее положительное целое число, которое больше
n
идеального квадрата и является конкатенациейn
некоторого другого числа. Порядок цифрn
не может быть изменен.n
Можно назвать число, соединенное для получения идеального квадратаr_1
. - Если
r_1
не является идеальным квадратом, повторите вышеописанный процесс сr_1
новым входом в процесс. Повторять до тех пор, покаr_k
не получится идеальный квадрат, обозначенныйs
. - Выведите значение
sqrt(s)
.
Ввод может быть сделан в любом формате. Вы можете предположить, что n
это положительное целое число. Если любой r_k
имеет начальный ноль (и r_k
≠ 0), ноль можно игнорировать.
Контрольные примеры
Вот несколько тестовых случаев. Процесс демонстрирует вышеуказанные шаги.
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
Это код гольф. Стандартные правила применяются. Самый короткий ответ (в байтах) выигрывает.
while x**.5%1:
может быть?Питон,
200198178 байтисточник
math.sqrt
доm
.Брахилог , 26 байт
Попробуйте онлайн!
Последний тестовый пример был опущен в ссылке TIO, потому что выполнение одного заняло больше минуты. Я запустил его на своем ноутбуке, и правильный результат был достигнут не более чем за два часа.
Второй к последнему
ℕ
необходим в том случае, когда начальный ввод уже является идеальным квадратом, поэтому первый идеальный квадрат, который имеет его в качестве префикса, сам по себе и!
необходим для того, чтобы убедиться, что при обратном отслеживании выполняется итерация вместо нахождения большего конкатенированного квадрата, но я не знаю, зачем≜
это нужно, я просто знаю, что 5 дает неправильный ответ без него.источник
∧
s на самом деле короче, чем использование сэндвича.)Perl 6 , 101 байт
источник
ES7, 116 байт
Да, я мог бы, вероятно, сохранить байт с помощью
eval
.источник