#P3746. [六省联考 2017] 组合数问题

    ID: 2679 远端评测题 1000ms 512MiB 尝试: 7 已通过: 1 难度: 6 上传者: 标签>数论数学矩阵乘法递推各省省选2017

[六省联考 2017] 组合数问题

题目描述

组合数 CnmC_n^m 表示的是从 nn 个互不相同的物品中选出 mm 个物品的方案数。举个例子, 从 (1,2,3)(1, 2, 3) 三个物品中选择两个物品可以有 (1,2)(1, 2)(1,3)(1, 3)(2,3)(2, 3) 这三种选择方法。根据组合数的定义,我们可以给出计算组合数 CnmC_n^m 的一般公式:

Cnm=n!m! (nm)!C_n^m = \frac {n!} {m! \ (n - m)!}

其中 n!=1×2××nn! = 1 \times 2 \times \cdots \times n。(特别地,当 n=0n = 0 时,n!=1n! = 1;当 m>nm > n 时,Cnm=0C_n^m = 0。)

小葱在 NOIP 的时候学习了 CijC_i^jkk 的倍数关系,现在他想更进一步,研究更多关于组合数的性质。小葱发现,CijC_i^j 是否是 kk 的倍数,取决于 CijmodkC_i^j \bmod k 是否等于 00,这个神奇的性质引发了小葱对 mod\mathrm{mod} 运算(取余数运算)的兴趣。现在小葱选择了是四个整数 n,p,k,rn, p, k, r,他希望知道

$$\left( \sum_{i = 0}^\infty C_{nk}^{ik + r} \right) \bmod p, $$

$$\left( C_{nk}^{r} + C_{nk}^{k + r} + C_{nk}^{2k + r} + \cdots + C_{nk}^{(n - 1)k + r} + C_{nk}^{nk + r} + \cdots \right) \bmod p $$

的值。

输入格式

第一行有四个整数 n,p,k,rn, p, k, r,所有整数含义见问题描述。

输出格式

一行一个整数代表答案。

2 10007 2 0
8
20 10007 20 0
176

提示

对于 30%30\% 的测试点,1n,k301 \leq n, k \leq 30pp 是质数;
对于另外 5%5\% 的测试点,p=2p = 2
对于另外 5%5\% 的测试点,k=1k = 1
对于另外 10%10\% 的测试点,k=2k = 2
对于另外 15%15\% 的测试点,1n103,1k501 \leq n \leq 10^3, 1 \leq k \leq 50pp 是质数;
对于另外 15%15\% 的测试点,1n×k1061 \leq n \times k \leq 10^6pp 是质数;
对于另外 10%10\% 的测试点,1n109,1k501 \leq n \leq 10^9, 1 \leq k \leq 50pp 是质数;
对于 100%100\% 的测试点,$1 \leq n \leq 10^9, 0 \leq r < k \leq 50, 2 \leq p \leq 2^{30} - 1$。