1
2
3
4
if (arr[n - k + 1] == 0) {
cout << arr[n] % MOD;
return 0;
}

(a⋅b)modp = ((amodp)⋅(bmodp))modp = (amodp * b)modp

仔细想一下就会得出

由上式子(x1⋅x2⋅⋯⋅xk)modp = (((x1modp)⋅x2)modp⋯xm)modp

这个公式如果不理解,可以从右式子逐步化简,最后就能得到左边式子。