Part1: Introduction
Atcoder Beginner Contest 279 is good for learning generating functions. The English version tutorial of 279Ex has already been posted on the MathStackExchange by a kind person. Unfortunately, the English tutorial on 279G is not available. Now I would like to make a second-hand tutorial on 279G based on PCTprobability's idea. I spend a huge amount of time understanding this idea. For contestants at about my level, it is quite difficult to understand
the idea even if it is written in English, let alone it is written in Japanese only (My Japanese is N5 level). I will make the following contributions.
(1)Write the tutorial in English. The original tutorial is in Japanese only.
(2)Fill in the details.
(3)Offer an accepted implementation.
Part2: Problem Statement
The problem says: There is a grid with $$$1×N$$$ squares, numbered $$$1,2,…,N$$$ from left to right.
Takahashi prepared paints of $$$C$$$ colors and painted each square in one of the C colors. Then, there were at most two colors in any consecutive K squares. Formally, for every integer $$$i$$$ such that $$$1≤i≤N−K+1$$$, there were at most two colors in squares $$$i,i+1,…,i+K−1$$$.
In how many ways could Takahashi paint the squares? Since this number can be enormous, find it modulo $$$998244353$$$.
Test Case $$$1$$$: $$$N=K=C=3$$$. In this input, we have a $$$1×3$$$ grid. Among the $$$27$$$ ways to paint the squares, there are $$$6$$$ ways to paint all squares in different colors, and the remaining $$$21$$$ ways are such that there are at most two colors in any consecutive three squares.
Test Case $$$2$$$: $$$N=10, K=5, C=2$$$: Print $$$1024$$$.
Test Case $$$3$$$: $$$N=998, K=244, C=353$$$: Print $$$952364159$$$.