Description
求
∑i=1nCik+rnkmod p
n<=1e9,k,r<=50,2<=p<=2^30-1
Analysis
考虑所求和式的组合意义
• 从 nk 个物品中,选出模 k 余 r 个物品的方案数
•
dp[i][j]
表示考虑了前 i 个物品,选出来的物品数模 k 为 j的方案数
•
dp[i+1][j]=dp[i][j]+dp[i][j−1]
• 从 i 到 i+1 的转移保持不变,可以矩乘优化
O(k3logn)
然而 这个dp 比较神奇
有“结合律”
dp[n+m][i+j]=dp[n][i]∗dp[m][j]
可以理解为“枚举前 n 个物品和后 m 个物品的选取情况”
由结合律,可以直接对dp数组快速幂
O(k2logn)