Home => ProblemSet => 2.12-39:k个1
Problem1525--2.12-39:k个1

1525: 2.12-39:k个1

Time Limit: 1 Sec  Memory Limit: 128 MB  Submit: 0  Solved: 3
[ Submit ] [ Status ] [ Creator: ][ 参考程序 ]

Description

用位运算生成下一个含有k个1的二进制数
在所有32-bit的整数中,含有k个数字“1”的二进制数一共有C(32,k)个。给出其中的一个二进制数,你如何利用位运算快速找到下一个恰有k个“1”的数?例如,如果给你二进制数01011100,那么下一个(含4个“1”的)数就是01100011。

Input

一行两个数n和k,n表示二进制含有k个1的一个十进制数

Output

一行一个最接近n的十进制整数m,m>n且m的二进制数含有k个1

Sample Input Copy

15 4

Sample Output Copy

23

HINT

样例二:
输入:
30 4

输出:
39


0 <= n < 2^31 -1


Source/Category