解説
mod M のフィボナッチ数列の周期をf(M)とします。M=998244353から始めてMをf(M)で置き換える操作を繰り返すと
998244353→1996488708→27710040→2341560→32760→1680→240→120
と変化し、120以降は120がループすることが分かります。g(N,K,M)をこの問題の答えをMで割った余りとすると、
g(N,K,M)={Fg(N,K−1,f(M))modMNmodMif K>0if K=0
となります。また、f(M)=Mの時はx→FxをZ/MZ上の写像と見て繰り返し二乗法をするとO(MlogK)で計算できます。
f(M)の計算方法は、M=∏kpkekとすると
f(M)=lcm(f(p1e1),f(p2e2),…,f(pkek))
です。また、
f(pe)∣pe−1f(p)
であり、
f(p)=⎩⎨⎧20p−12(p+1)if p=5if p=1,4 mod 5if p=2,3 mod 5
となります。
f(pe)=pe−1f(p)として計算しても正しく答えを求められます。