values различных целых чисел, каждое больше 1. Из них строят двоичные деревья по правилам:
- в каждой вершине записано число из values, одно и то же число можно использовать сколько угодно раз;
- у каждой вершины либо нет детей, либо ровно двое, и тогда её число равно произведению чисел детей.
Деревья, отличающиеся тем, какой ребёнок левый, а какой правый, считаются разными. Сколько всего таких деревьев можно построить? Ответ может быть большим — верните его по модулю 10^9 + 7.values=[3, 9, 27] → 8
Деревья из одной вершины: 3, 9, 27. Ещё 9 с детьми 3 и 3. Для 27 = 3 · 9 детей можно поставить как (3, 9) и как (9, 3), а 9 в каждом случае может быть листом или раскрыться в 3 и 3 — это ещё 4 дерева. Всего 3 + 1 + 4 = 8.
values=[6, 2, 7] → 3
6 = 2 · 3, но 3 в наборе нет, так что подходят только три дерева из одной вершины.
values=[2, 4, 8] → 8
Одиночные: 3 дерева. 4 = 2 · 2: 1 дерево. 8 = 2 · 4 или 4 · 2, причём 4 может раскрыться: 4 дерева. Итого 8.
values различныvalues=[3, 9, 27]
8
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 101 тест на сервере, включая скрытые.