Gravatar
WHZ0325
积分:1233
提交:347 / 532

Pro1621  [Ural 1057] 幂和的数量

拆分成前缀和的形式,$f(x)$ 表示 $[0,x]$ 范围内的解,则答案为 $f(y)-f(x-1)$。

问题等价于将数字转化为 $b$ 进制后 $1$ 的位数为 $k$ 的方案数。

数位 DP 的思想是从高位到低位沿着 $x$ 的上界进行枚举,每次累加这一位取不到上界时的方案数,本题中,这个方案数就是组合数。

时间复杂度为 $O(log^2n)$,瓶颈在于预处理组合数。

细节有:如果 $x$ 满足条件需要在最后累加进去,且一旦有一位上的数大于 $1$ 则代表后面若干位可以任意填 $1$,这时需要跳出循环,选择了 $k$ 个 $1$ 后也应跳出循环,此时后面的若干位应全部填 $0$。


2023-04-09 09:47:07    
我有话要说
暂无人分享评论!