Ctrl K

Произведение различных простых

Сложная
Дан массив целых чисел values. Выборка — это набор элементов массива, взятых по своим позициям; две выборки различны, если различаются множества выбранных позиций. Выборка подходит, если произведение её элементов равно произведению одного или нескольких **различных** простых чисел. Например, 6 = 2·3 и 7 подходят, а 4 = 2·2 и 1 — нет. Верните количество подходящих выборок по модулю 10⁹ + 7.
Пример 1
values=[1, 6, 4, 5] → 6

Подходят выборки {6}, {5}, {6, 5} (произведение 30 = 2·3·5) и они же вместе с единицей — всего 6. Четвёрку брать нельзя: 4 = 2·2.

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

{3} — два способа (любая из троек), {10}, {3, 10} — ещё два способа. Обе тройки вместе дают 9 = 3·3, это не подходит. Итого 5.

Пример 3
values=[1, 1, 9] → 0

Произведение единиц равно 1 — в нём нет ни одного простого множителя, а 9 = 3·3. Подходящих выборок нет.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 1 ≤ values[i] ≤ 30
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве группы с одинаковым средним СложнаяЦепочки с квадратными суммами СложнаяПодтянуть числа под делители СложнаяМеньше всего прямых через точки СредняяПроизведения без квадратов Средняя
загружаем Python…
Вход
values=[1, 6, 4, 5]
Ожидается
6

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