dp[i][j]dp[i][j] を、長さ ii の、各要素が 11 以上 M1M - 1 以下の DD でない整数で、総和を MM で割った余りが jj である数列の数とします。

jjDD の倍数でないような dp[i][j]dp[i][j] は、ii が同じならば全て等しいので、bib_i とします。

また、M/D=KM/D = K とし、dp[i][kD]=ai,kdp[i][kD] = a_{i, k} (0k<K)(0\leq k < K) とします。

a,ba, b についての漸化式は、

(ai+1,0ai+1,1ai+1,2ai+1,K2ai+1,K1bi+1)=(01111110MK00111111MK10011111MK11111001MK11111100MK11111111MK2)(ai,0ai,1ai,2ai,K2ai,K1bi) \begin{pmatrix} a_{i + 1, 0}\\ a_{i + 1, 1}\\ a_{i + 1, 2}\\ \vdots\\ a_{i + 1, K - 2}\\ a_{i + 1, K - 1}\\ b_{i + 1} \end{pmatrix} = \begin{pmatrix} 0& 1& 1& 1& \ldots& 1& 1& 1& 0& M-K\\ 0& 0& 1& 1& \ldots& 1& 1& 1& 1& M-K\\ 1& 0& 0& 1& \ldots& 1& 1& 1& 1& M-K\\ \vdots& \vdots& \vdots& \vdots& \ddots& \vdots& \vdots& \vdots& \vdots& \vdots\\ 1& 1& 1& 1& \ldots& 1& 0& 0& 1& M-K\\ 1& 1& 1& 1& \ldots& 1& 1& 0& 0& M-K\\ 1& 1& 1& 1& \ldots& 1& 1& 1& 1& M-K-2 \end{pmatrix} \begin{pmatrix} a_{i, 0}\\ a_{i, 1}\\ a_{i, 2}\\ \vdots\\ a_{i, K - 2}\\ a_{i, K - 1}\\ b_{i} \end{pmatrix}

なので、

(aN,0aN,1aN,2aN,K2aN,K1bN)=(01111110MK00111111MK10011111MK11111001MK11111100MK11111111MK2)N(100000)\begin{pmatrix} a_{N, 0}\\ a_{N, 1}\\ a_{N, 2}\\ \vdots\\ a_{N, K - 2}\\ a_{N, K - 1}\\ b_{N} \end{pmatrix} = \begin{pmatrix} 0& 1& 1& 1& \ldots& 1& 1& 1& 0& M-K\\ 0& 0& 1& 1& \ldots& 1& 1& 1& 1& M-K\\ 1& 0& 0& 1& \ldots& 1& 1& 1& 1& M-K\\ \vdots& \vdots& \vdots& \vdots& \ddots& \vdots& \vdots& \vdots& \vdots& \vdots\\ 1& 1& 1& 1& \ldots& 1& 0& 0& 1& M-K\\ 1& 1& 1& 1& \ldots& 1& 1& 0& 0& M-K\\ 1& 1& 1& 1& \ldots& 1& 1& 1& 1& M-K-2 \end{pmatrix}^N \begin{pmatrix} 1\\ 0\\ 0\\ \vdots\\ 0\\ 0\\ 0 \end{pmatrix}

であり、係数行列は K+1K + 1 次の正方行列なので、繰り返し二乗法によって、答えである aN,0a_{N, 0} は時間計算量 O((MD)3logN)\displaystyle O\left(\left(\frac{M}{D}\right)^3 \log N\right) で計算することができます。