解説

包除原理を考えます

答えは

  • XXからYYのいずれかの値をもつ長さNNの数列の通りをPP通り
  • X1X-1からYYのいずれかの値をもつ長さNNの数列をQQ通り
  • XXからY1Y-1のいずれかの値をもつ長さNNの数列RR通り
  • X1X-1からY1Y-1のいずれかの値をもつ長さNNの数列SS通り とするとP(Q+R)+SP-(Q+R)+Sとなります。 冪乗はNNの制約から繰り返し22乗をすると高速に求まリます。

実装例 (Python)