Давайте безліч цілих чисел більше 1 і назвемо його X . Ми визначимо S (i) як множину всіх членів X, що ділиться на i, де i> 1 . Хочеться вибрати з цих підмножин групу таких наборів, що
Їх об'єднання - це множина X
Жоден елемент X не є в двох із множин.
Наприклад, ми можемо перегрупуватися {3..11}
як
{3,4,5,6,7,8,9,10,11}
S(3): {3, 6, 9, }
S(4): { 4, 8, }
S(5): { 5, 10, }
S(7): { 7, }
S(11):{ 11}
Деякі набори не можуть бути виражені таким чином. Наприклад, якщо ми беремо {3..12}
, 12
є кратним як 3, так і 4, що запобігає взаємовиключенню наших наборів.
Деякі множини можуть бути виражені декількома способами, наприклад {4..8}
можуть бути представлені як
{4,5,6,7,8}
S(4): {4, 8}
S(5): { 5, }
S(6): { 6, }
S(7): { 7, }
але вона також може бути представлена як
{4,5,6,7,8}
S(2): {4, 6, 8}
S(5): { 5, }
S(7): { 7, }
Завдання
Наша мета - написати програму, яка буде приймати набір як вхід і виводити найменшу кількість підмножин, які покривають його таким чином. Якщо таких немає, слід вивести якесь значення, відмінне від натурального цілого (наприклад 0
).
Це питання з кодовим гольфом, тому відповіді будуть набиратись у байтах, при цьому менше байтів буде кращим.
Тести
{3..11} -> 5
{4..8} -> 3
{22,24,26,30} -> 1
{5} -> 1
[5..5]
? Чи можемо ми отримувати такі речі [8..4]
?
12
є кратним обом 3
і 4
запобігає взаємовиключенню наших наборів ": чому? Я не бачу нічого іншого в постановці проблеми, яка потребує 12
переходу в обидва підмножини.
[22,24,26,30]
всі кратні 2
. Ви впевнені, що не було б краще видалити це та пісочницю?