包除原理パートについて補足をしておきます.(包除原理を知らない方は先に包除原理について調べてみてください.)
簡単のため,ここでは 7 文字からなる文字列の場合について考えます.i,i+1,i+2 文字目が「ココア」であるような文字列の集合を Si,i+1,i+2 と置きます.このとき,求めるものは ∣S1,2,3∪S2,3,4∪S3,4,5∪S4,5,6∪S5,6,7∣ です.ここで,包除原理より次が成り立ちます.
=∣S1,2,3∪S2,3,4∪…∪S5,6,7∣+∣S1,2,3∣+∣S2,3,4∣+∣S3,4,5∣+∣S4,5,6∣+∣S5,6,7∣−∣S1,2,3∩S2,3,4∣−∣S1,2,3∩S3,4,5∣−∣S1,2,3∩S4,5,6∣−⋯−∣S4,5,6∩S5,6,7∣+∣S1,2,3∩S2,3,4∩S3,4,5∣+∣S1,2,3∩S2,3,4∩S4,5,6∣+⋯+∣S3,4,5∩S4,5,6∩S5,6,7∣−∣S1,2,3∩S2,3,4∩S3,4,5∩S4,5,6∣−⋯−∣S2,3,4∩S3,4,5∩S4,5,6∩S5,6,7∣+∣S1,2,3∩S2,3,4∩S3,4,5∩S4,5,6∩S5,6,7∣
右辺の式の 2 段目の ∣S1,2,3∩S2,3,4∣+⋯+∣S4,5,6∩S5,6,7∣ に注目してみましょう.S1,2,3∩S2,3,4 は,1,2,3 文字目と 2,3,4 文字目がそれぞれ「ココア」であるようなものの集合ですが,このようなものは存在しないので ∣S1,2,3∩S2,3,4∣=0 です.同様に考えると,2 段目の項のうち 0 でないものは ∣S1,2,3∩S4,5,6∣,∣S1,2,3∩S5,6,7∣,∣S2,3,4∩S5,6,7∣ のみです.S1,2,3∩S4,5,6 の要素数は 7 文字目を自由に決めることで 21 つと求めることができます.残りも同様に考えるとそれぞれ 21 つと求めることができます.
ここで,重要な考察として,2 段目の項に現れる値は 0 か 2 の 2 通りです.実は,任意の段について,登場する値は 0 またはある特定の値 K(=2(自由に決められる文字の個数))の高々 2 通りになります(これは,長さが 7 の場合でなくても成り立ちます).したがって,各段について, K が何回登場するかがわかれば,登場回数に K をかけた値が段全体の値になります.
さらに,i 段目の式に登場する K の回数は,i 個の「ココア」の配置の方法の数に一致します.先ほどの例では,(1,2,3) と (4,5,6) に配置する方法,(1,2,3),(5,6,7) に配置する方法,(2,3,4),(5,6,7) に配置する方法の 3 通りです((1,2,3) と (2,3,4) のように重ねて配置することはできません).この配置の方法は,公式解説にあるように,「ココア」2 個と「○」1 個の並べ方に帰着することができます.
整理すると,i 段目の値 (=ai とする)は,自由に決められる文字の個数を k 個,i 個のココアの配置の方法を m 通りとすると ai=2km です.すなわち,
- 1 段目について,1 個の「ココア」の配置の方法は 5C1 通り,自由に決められる文字の個数が 4 個だから
a1=24×5=80 .
- 2 段目について,2 個の「ココア」の配置の方法は 3C2 通り,自由に決められる文字の個数が 1 個だから
a2=21×3=6 .
- 3 段目について,3 個のココアの配置の方法は存在しないから,a3=0
- 4,5 段目についても,4,5 個のココアの配置の方法は存在しないから,a4,a5=0
これをもとの式に代入することで,∣S1,2,3∪S2,3,4∪…∪S5,6,7∣=a1−a2+a3−a4+a5=80−6+0−0+0=74 と求めることができます.12 文字からなる文字列の場合も同様に考えることが可能です.