P2640【SDOI2013 R1 Day2】方程
问题描述
输入格式
输入含有多组数据 ,第一行两个 正整数 T,p。T表示这个测试点内的 数据 组数 ,p的含义见题目描述 。
对于每组数据,第一行 四个非负 整数 n,n1 ,n2 ,m。
第二行 n1+ n2 个正整数,表示 整数,表示 A1…An1+n2 。请注意,如果 。请注意,如果 n1+ n2 等于 0,那么这一行将成为空行
输出格式
共 T行,每一个正整数表示取模后的答案
样例输入
3 10007
3 1 1 6
3 3
3 0 0 5
3 1 1 3
3 3
样例输出
3
6
0
提示
考虑没有限制的情况,那么显然用隔板法求解,$Ans=C_{m-1}^{n-1}$
考虑大于等于的限制,那么显然直接$m=m-\sum A_i-1$即可。
考虑小于等于的限制,不好做,但限制数很少,考虑容斥。
那么$Ans=C_{m-sum}^{n-1}-有一个X_i不满足条件的方案+有两个X_i不满足条件的方案……$
显然,后面的东西也是一个隔板法,那么剩下的问题就是算组合数。
如果p是质数,直接Lucas,而本题p可能是合数,需要用到扩展Lucas,大体思路是利用CRT解方程,
即将p分解质因数,分别对每个$p_i^{a_i}$计算答案得到一组同余方程,然后因为模数互质,可以用CRT合并得到最终答案,具体请百度扩展Lucas
代码:
1 |
|