问题 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 。
提示
样例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中,没有合法方案 。
来源
[提交][状态]