CF582D Number of Binominal Coefficient

  • 原题链接: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)位即可
  • 太困了,不想写代码,先咕咕

如果有误劳请大神指出

原文地址:https://www.cnblogs.com/y-dove/p/14743141.html