问题 5172 --数字转换

5172: 数字转换

题目描述

对于任意十进制正整数$x$,我们定义一次数字转换是将数字$x$转变为$x$在二进制表示下$1$的个数。显然,任意正整数经过若干次数字转换后,最终都会得到$1$,此时经过的转换次数我们也称之为**最大转换次数**。 例如$(27)_{10}$在二进制下为$(11011)_2$,则$27$经过一次数字转换后,得到了$4$,$4$再经过一次数字转换后得到了$1$。所以$27$经过$2$次转换后,得到了$1$,即$27$的最大转换次数为$2$。 现给定$x$与$k$,请计算出$1$~$x$中,有多少数字的最大转换次数为$k$。

输入

输入第一行,一个二进制表示的正整数$x$ 输入第二行,一个非负整数$k$

输出

输出$1$~$x$中,最大转换次数为$k$的数字个数,并对$10^9+7$取模。

样例输入输出

输入#1 复制
11
1
输出#1 复制
1
输入#2 复制
11011
2
输出#2 复制
13

提示

+ 对 $30\%$ 的数据,$1\leq x \leq 2^{20}$, $0\leq k\leq 5$ + 对 $50\%$ 的数据,$1\leq x \leq 2^{63}-1$, $0\leq k\leq 20$ + 对 $100\%$ 的数据,$1\leq x \leq 2^{1000}$, $0\leq k\leq 10^3$。 样例1说明:1~3中,只有2的最大转换次数为1
序号 标题 作者 发表时间 费用 订购数 操作