いろはちゃんコンテスト Day2 E - 連呼
  
  
AAAが登場しない列を数えて(NN+M−2)から引く方針が良さそう。
とりあえず、最初の文字と最後の文字の制限がないとして考えてみる。AAAが登場しない列とは、AとAAをM個のBの間に挿入してできる列である。Aをd個にわけるとして、Aがx個、AAがy個になったとすると、
x+2y=N
x+y=d
より、y=N−d,x=2d−Nと整理できる。AとAAの並べ方は(yd)通りあり、M個のBへの挿入の仕方は(両端を含めると)(dM+1)通りある。したがって、総和は∑d(dM+1)(yd)となる。(有効なdについてだけ計算する。)
さて、最初の文字がAで最後の文字がBという制限を満たすものを数える。最初がABから始まるパターンとAAから始まるパターンにわけて数えることにする。
最初がABから始まる場合、最後がBなので、AB·B·...·Bの·で示したM−1箇所から選んでAかAAを挿入することになる。総和は∑d(dM−1)(yd)である。ただし、x+2y=N−1,x+y=d だからy=N−1−dである。
最初がAAから始まる場合、AAB·B·...·Bの·で示したM−1箇所から選んでAかAAを挿入することになる。総和はやはり∑d(dM−1)(yd)である。ただし、x+2y=N−2,x+y=d だからy=N−2−dである。