Ctrl K

Зеркало из квадратов

Средняя
Дан массив положительных чисел values. Выберите из него несколько элементов (порядок в массиве не важен) и разложите их в ряд-«зеркало»: x, x², x⁴, …, x^m, …, x⁴, x², x где m — степень двойки (в том числе m = 1, тогда ряд — это одно число x). Каждое следующее число к середине — квадрат предыдущего, середина встречается один раз, остальные — дважды, симметрично. Например, [2, 4, 16, 4, 2] и [5, 25, 5] подходят, а [2, 4, 8, 4, 2] — нет. Верните наибольшее число элементов в таком ряду.
Пример 1
values=[3, 9, 81, 9, 3, 2] → 5

Раскладываем 3, 9, 81, 9, 3: каждое следующее число к середине — квадрат предыдущего. Двойка не подходит.

Пример 2
values=[1, 1, 1, 1, 5] → 3

Из единиц строится зеркало 1, 1, 1 (единица в квадрате — снова единица), но длина должна быть нечётной, поэтому четвёртая единица лишняя.

Пример 3
values=[6, 7, 49, 10] → 1

Для 7, 49, 7 нужна вторая семёрка, её нет. Остаётся зеркало из одного числа.

Ограничения
  • 2 ≤ len(values) ≤ 10⁵
  • 1 ≤ values[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиУзлы сетки под кругами СредняяРазные отрезки с малым числом кратных СредняяТёмные клетки в окнах 2×2 СредняяКвадратный участок без лишних оград СредняяПростые числа на лучах сетки Средняя
загружаем Python…
Вход
values=[3, 9, 81, 9, 3, 2]
Ожидается
5

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 59 тестов на сервере, включая скрытые.