- 原题链接:CF582D
- 题意简述:给定(p,k,A),求满足(m leq n leq A)的二元组(n,m),使得(inom{n}{m} equiv 0(mod p^k))
- (A leq 10^{1000},p,k leq 1e9)
- 首先考虑题目等价于( u_p(inom{n}{m}) ge k)
- 考虑(kummer)定理,( u_p(inom{n+m}{n}))等于(n+m)在(p)进制下进位的次数,于是每一位相对不怎么依赖于其他位,考虑数位(dp)
- 有注意到其实( u_p{inom{n}{m}} leq log_p{A} leq log_2{A}),所以(k)实际上不是很大
- 一般地,我们设(dp[i][k][0/1][0/1])表示(dp)到(i)位,进了(k)次,上一位有没有进位,有没有最高位限制
- 但是我们注意,有没有最高位限制需要从高到低(dp),而进位需要从低到高,怎么办呢
- 其实我们可以发现最高位限制也可以从低到高,我们魔改一下,改成前(i)位是否(leq A)的前(i)位即可
- 太困了,不想写代码,先咕咕