A - Welcome to NPCAPC Editorial by chro4896

補集合を考える方法

\(N<12\) のときの答えは明らかに\(0\) であるため、\(N \ge 12\) のときのみ考えます。

全体集合\(U\) を「英大文字および英小文字だけからなる長さ\(N\) の文字列全体の集合」としたときの補集合\(C\) を考えると、答えは\(|U|-|C|\) と表すことができます。
ここで、集合\(A \subseteq U\) を「英大文字および英小文字だけからなる長さ\(N\) の文字列のうちNPCAPC含まない文字列全体の集合」とし、集合\(B \subseteq U\) を「英大文字および英小文字だけからなる長さ\(N\) の文字列のうちnpcapc含まない文字列全体の集合」とします。
このとき\(C = A \cup B\) であるため、\(|C| = |A| + |B| - |A \cap B|\) となります。

まず\(|A|\) について考えます。
\(0 \le k < 6\) を満たす整数\(k\) に対し、NPCAPC のちょうど\(k\) 文字目までを部分文字列として含む長さ\(N\)の文字列を考えると、その個数は\(51^{n-k} \times _{n} \mathrm{C}_{k}\) です。
よって、\(A\) の個数は以下の式によって計算できます。
\(\displaystyle |A| = \sum_{k = 0}^{5} \left( 51^{n-k} \times _{n} \mathrm{C}_{k} \right)\)

また、大文字と小文字を入れ替える変換を考えると、\(A\)\(B\) は1対1 に対応するため、\(|B| = |A|\) であることがわかります。

最後に\(|A \cap B|\) について考えます。
\(0 \le k < 6\) かつ\(0 \le l < 6\) を満たす整数の組\((k, l)\) について、NPCAPC のちょうど\(k\) 文字目までを部分文字列として含み、かつnpcapc のちょうど\(l\) 文字目までを部分文字列として含む、長さ\(N\)の文字列を考えると、その個数は\(50^{n-k-l} \times _{n} \mathrm{C}_{k+l} \times {}_{k+l} \mathrm{C}_{k}\) です。
よって、\(A \cap B\) の個数は以下の式によって計算できます。
\(\displaystyle |A \cap B| = \sum_{k = 0}^{5} \sum_{l = 0}^{5} \left( 50^{n-k-l} \times _{n} \mathrm{C}_{k+l} \times {}_{k+l} \mathrm{C}_{k} \right)\)

以上により、答えを求めることができます。
上記の方針で解いたときの提出の例も参考までに載せておきます。

posted:
last update: