CF582D Number of Binominal Coefficient

  • 原题链接:CF582D
  • 题意简述:给定\(p,k,A\),求满足\(m \leq n \leq A\)的二元组\(n,m\),使得\(\binom{n}{m} \equiv 0(\mod p^k)\)
  • \(A \leq 10^{1000},p,k \leq 1e9\)
  • 首先考虑题目等价于\(\nu_p(\binom{n}{m}) \ge k\)
  • 考虑\(kummer\)定理,\(\nu_p(\binom{n+m}{n})\)等于\(n+m\)\(p\)进制下进位的次数,于是每一位相对不怎么依赖于其他位,考虑数位\(dp\)
  • 有注意到其实\(\nu_p{\binom{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\)位即可
  • 太困了,不想写代码,先咕咕

如果有误劳请大神指出

posted @ 2021-05-07 23:18  y_dove  阅读(77)  评论(0编辑  收藏  举报