Codecraft-18 and Codeforces Round 458 (Div. 1 + Div. 2, combined)
C
Travelling Salesman and Special Numbers
Codeforces
1800
原题
← BD →
翻译中…

The Travelling Salesman spends a lot of time travelling so he tends to get bored. To pass time, he likes to perform operations on numbers. One such operation is to take a positive integer $*x*$ and reduce it to the number of bits set to $1$ in the binary representation of $*x*$. For example for number $13$ it's true that $13_{10} = 1101_{2}$, so it has $3$ bits set and $13$ will be reduced to $3$ in one operation.

翻译中…

He calls a number special if the minimum number of operations to reduce it to $1$ is $*k*$.

翻译中…

He wants to find out how many special numbers exist which are not greater than $*n*$. Please help the Travelling Salesman, as he is about to reach his destination!

翻译中…

Since the answer can be large, output it modulo $10^{9} + 7$.

翻译中…

Input

翻译中…

The first line contains integer $*n*$ ($1 ≤ *n* < 2^{1000}$).

翻译中…

The second line contains integer $*k*$ ($0 ≤ *k* ≤ 1000$).

翻译中…

Note that $*n*$ is given in its binary representation without any leading zeros.

翻译中…

Output

翻译中…

Output a single integer — the number of special numbers not greater than $*n*$, modulo $10^{9} + 7$.

翻译中…

Note

翻译中…

In the first sample, the three special numbers are $3$, $5$ and $6$. They get reduced to $2$ in one operation (since there are two set bits in each of $3$, $5$ and $6$) and then to $1$ in one more operation (since there is only one set bit in $2$).

翻译中…

样例

Input #1
110
2
Output #1
3
InputCopy OutputCopy
Input #2
111111011
2
Output #2
169
InputCopy OutputCopy
题目信息
题号
914C
时间限制
1 s
内存限制
256 MB
标签
暴力
组合数学
动态规划

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。