Множини#253

Множини (Розбір)

Знайдемо замкнену формулу для f([n], k).

Почнемо з бази: f([n], 1) — кількість підмножин множини з елементів, тобто 2^n.

Тепер загальний крок. За означенням

f([n], k) = \sum_{s \subseteq [n]} f(s, k-1).

Значення f(s, k-1) залежить лише від розміру , а підмножин розміру рівно \binom{n}{j}. Тому, позначивши F_k(n) = f([n], k), маємо

F_k(n) = \sum_{j=0}^{n} \binom{n}{j} F_{k-1}(j).

Припустимо (індукція за ), що F_{k-1}(j) = k^{\,j}. Це вірно для k-1 = 1, бо 2^j. Тоді

F_k(n) = \sum_{j=0}^{n} \binom{n}{j} k^{\,j} \cdot 1^{\,n-j} = (k+1)^n

за біномом Ньютона.

Отже, відповідь — просто

f([n], k) = (k+1)^n \bmod (10^9 + 7).

Перевіримо на прикладах з умови: n = 1, k = 1 дає 2^1 = 2; n = 2, k = 2 дає 3^2 = 9. Обидва збігаються.

Обчислюється це швидким піднесенням до степеня за \mathcal{O}(\log n). Не забудьте взяти k+1 за модулем перед піднесенням, бо сягає 10^9.