CF914C.Travelling Salesman and Special Numbers

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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 xx and reduce it to the number of bits set to 11 in the binary representation of xx . For example for number 1313 it's true that 1310=1101213_{10}=1101_{2} , so it has 33 bits set and 1313 will be reduced to 33 in one operation.

He calls a number special if the minimum number of operations to reduce it to 11 is kk .

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

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

输入格式

The first line contains integer nn ( 1<=n<210001<=n<2^{1000} ).

The second line contains integer kk ( 0<=k<=10000<=k<=1000 ).

Note that nn is given in its binary representation without any leading zeros.

输出格式

Output a single integer — the number of special numbers not greater than nn , modulo 109+710^{9}+7 .

输入输出样例

  • 输入#1

    110
    2
    

    输出#1

    3
    
  • 输入#2

    111111011
    2
    

    输出#2

    169
    

说明/提示

In the first sample, the three special numbers are 33 , 55 and 66 . They get reduced to 22 in one operation (since there are two set bits in each of 33 , 55 and 66 ) and then to 11 in one more operation (since there is only one set bit in 22 ).

首页