前問の解法の計算量はO(m3logn)なので、本問のようにmが大きい場合は使用できません。一方で、今回は前問に比べてnは小さいです。そこで、形式的冪級数を用います。
xについての多項式fのxkの係数を[xk]fと表すと、サイコロをk回振った時に点nに止まる確率は[xn]{m1x+m1x2+⋯+m1xm}kとなります。よって、求める確率pn=k=0∑∞[xn]{m1x+m1x2+⋯+m1xm}k=[xn]k=0∑∞{m1(x+x2+⋯+xm)}k=[xn]1−m1(x+x2+⋯+xm)1=[xn]m−(m+1)x+xm+1m(1−x)となります。
この記事より、形式的冪級数の逆元はO(nlogn)で求めることができるので、全体の計算量はO(nlogn)となり、十分時間内に間に合います。
解答例
形式的冪級数の積を求める際にmod環上での畳み込みを行うため、AC Libraryの一部を引用しました。引用した部分に関しては、解答例にその旨を明記してあります。
質問・誤りがある場合
Twitterに連絡ください。ID : @YS55749378