题意:
对于 ∀ 0 ≤ i ≤ n , 0 ≤ j ≤ min ( i , m ) \forall 0\leq i\leq n, 0\leq j\leq\min(i,m) ∀0≤i≤n,0≤j≤min(i,m) 有多少满足 ( i j ) = 0 m o d k \dbinom{i}{j}=0 \mod k (ji)=0modk ( n , m ≤ 1 0 18 n,m\leq 10^{18} n,m≤1018, k ≤ 100 k\leq100 k≤100 且 k k k 为素数)。
前置
思路
( i j ) \dbinom{i}{j} (ji) = ( ⌊ i k ⌋ ⌊ j k ⌋ ) . ( i m o d k j m o d k ) ( m o d k ) \dbinom{\left\lfloor\dfrac{i}{k}\right\rfloor }{\left\lfloor\dfrac{j}{k}\right\rfloor }.\dbinom{i \mod k }{j \mod k }\pmod k (⌊kj⌋⌊ki⌋).(jmodkimodk)(modk)
对于 ( ⌊ i k ⌋ ⌊ j k ⌋ ) \dbinom{\left\lfloor\dfrac{i}{k}\right\rfloor }{\left\lfloor\dfrac{j}{k}\right\rfloor } (⌊kj⌋⌊ki⌋) 可以继续做这样的操作,发现这个类似于拆分成 k k k 进制数。
于是设 i = ( a 1 a 2 . . . a n ) k i = (a_1a_2...a_n)_k i=(a1a2...an)k j = ( b 1 b 2 . . . b n ) k j = (b_1b_2...b_n)_k j=(b1b2...bn)k
于是最后转化为:
( i j ) = ( a 1 b 1 ) . ( a 2 b 2 ) … . ( a n − 1 b n − 1 ) . ( a n b n ) ( m o d k ) \dbinom{i}{j}=\dbinom{a_1}{b_1}.\dbinom{a_2}{b_2}….\dbinom{a_{n-1}}{b_{n-1}}.\dbinom{a_{n}}{b_{n}}\pmod k (ji)=(b1a1).(b2a2)….(bn−1an−1).(bnan)(modk)
考虑到 k k k 为素数,若 ∃ ( a p b p ) = 0 ( m o d k ) \exists \dbinom{a_p}{b_p}=0 \pmod k ∃(bpap)=0(modk) 即可满足条件,但是考虑到如果有多个 k k k 满足条件处理起来麻烦于是很自然地想到容斥原理。
小引理
$\dbinom{i}{j} = 0 \pmod k $ ( k k k 为素数且 i , j < k i,j<k i,j<k)
显然只有 i < j i<j i<j 时满足。:)(后面补)
继续考虑:容斥原理,设总个数为 A A A,不满足条件方案数为 B B B,答案即为 A − B A-B A−B. 想到求 A A A 是很简单的(这里不再阐述),问题转为求 B B B
但不满足时,一定 ∀ ( a p b p ) ≠ 0 ( m o d k ) \forall \dbinom{a_p}{b_p} \ne 0 \pmod k ∀(bpap)=0(modk) 即为 a p ≥ b p a_p \ge b_p ap≥bp。
最后问题转化为:求 ∀ 0 ≤ i ≤ n , 0 ≤ j ≤ min ( i , m ) \forall 0\leq i\leq n, 0\leq j\leq\min(i,m) ∀0≤i≤n,0≤j≤min(i,m)
i = ( a 1 a 2 . . . a n ) k i = (a_1a_2...a_n)_k i=(a1a2...an)k j = ( b 1 b 2 . . . b n ) k j = (b_1b_2...b_n)_k j=(b1b2...bn)k,有多少满足:
∀ a p ≥ b p \forall a_p \ge b_p ∀ap≥bp
问题转化为数位DP。
总结
由于是开夜车赶出来的,所以可能有些没有讲到位,后面继续完善!