Ctrl K

Отрезок, где произведение сходится

Лёгкая
Дан массив натуральных чисел values. Назовём непрерывный отрезок массива **честным**, если произведение его элементов равно произведению их НОК и НОД: prod(отрезок) == lcm(отрезок) * gcd(отрезок) Здесь prod — произведение всех чисел отрезка, lcm — их наименьшее общее кратное, gcd — наибольший общий делитель. Верните длину самого длинного честного отрезка.
Пример 1
values=[2, 1, 3, 1, 4, 4, 1] → 4

Отрезок [2, 1, 3, 1, 4]: произведение 24, НОД 1, НОК 12, и 12 · 1 = 24. Добавить ещё одну четвёрку уже нельзя: произведение станет 96, а НОК и НОД не изменятся.

Пример 2
values=[6, 6, 6, 6] → 2

Любые два соседних числа подходят: 6 · 6 = 36 = 6 · 6. Три шестёрки уже нет: 216 ≠ 36.

Пример 3
values=[1, 1, 5, 7, 1] → 5
Ограничения
  • 2 ≤ len(values) ≤ 2000
  • 1 ≤ values[i] ≤ 100
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПростые числа до границы СредняяЧисло как сумма двух простых СредняяПростые числа на лучах сетки СредняяРовные стопки карт ЛёгкаяXOR каждого подмножества Лёгкая
загружаем Python…
Вход
values=[2, 1, 3, 1, 4, 4, 1]
Ожидается
4

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