问题 5079 --二进制的规律

5079: 二进制的规律★★★

时间限制: 2 Sec  内存限制: 512 MB
提交: 70  解决: 30
[提交][状态][命题人:]

题目描述

给定整数 n,p ,你需要构造以一个长度为 m 的非负整数序列 a[1],a[2],...,a[m] ,使得下式成立:

(2^a[1]+p)+(2^a[2]+p)+...+(2^a[m]+p)=n

其中^表示指数符号,例:2^1=2, 2^2=4, 2^3=8...
求最小可能的 m 。

输入

输入包含两个整数 n,p(1≤n≤10^9,-1000≤p≤1000) 。

输出

输出一个整数,最小可能的 m 。
若不存在合法方案,则输出 -1 。
样例输入
Copy
24 0
样例输出
Copy
2

提示

样例2输入
24 1

样例2输出
3

样例3输入
24 -1

样例3输出
4

样例4输入
4 -7

样例4输出
2

样例5输入
1 1

样例5输出
-1

在样例1中,一个最优方案为 (2^4+0)+(2^3+0)=24 。
在样例2中,一个最优方案为 (2^4+1)+(2^2+1)+(2^0+1)=24 。
在样例3中,一个最优方案为 (2^4-1)+(2^2-1)+(2^2-1)+(2^2-1)=24 。
在样例4中,一个最优方案为 (2^4-7)+(2^1-7)=4 。
在样例5中,没有合法方案 。

来源

[提交][状态]