CF1225C.p-binary
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Vasya will fancy any number as long as it is an integer power of two. Petya, on the other hand, is very conservative and only likes a single integer p (which may be positive, negative, or zero). To combine their tastes, they invented p -binary numbers of the form 2x+p , where x is a non-negative integer.
For example, some −9 -binary ("minus nine" binary) numbers are: −8 (minus eight), 7 and 1015 ( −8=20−9 , 7=24−9 , 1015=210−9 ).
The boys now use p -binary numbers to represent everything. They now face a problem: given a positive integer n , what's the smallest number of p -binary numbers (not necessarily distinct) they need to represent n as their sum? It may be possible that representation is impossible altogether. Help them solve this problem.
For example, if p=0 we can represent 7 as 20+21+22 .
And if p=−9 we can represent 7 as one number (24−9) .
Note that negative p -binary numbers are allowed to be in the sum (see the Notes section for an example).
输入格式
The only line contains two integers n and p ( 1≤n≤109 , −1000≤p≤1000 ).
输出格式
If it is impossible to represent n as the sum of any number of p -binary numbers, print a single integer −1 . Otherwise, print the smallest possible number of summands.
输入输出样例
输入#1
24 0
输出#1
2
输入#2
24 1
输出#2
3
输入#3
24 -1
输出#3
4
输入#4
4 -7
输出#4
2
输入#5
1 1
输出#5
-1
说明/提示
0 -binary numbers are just regular binary powers, thus in the first sample case we can represent 24=(24+0)+(23+0) .
In the second sample case, we can represent 24=(24+1)+(22+1)+(20+1) .
In the third sample case, we can represent 24=(24−1)+(22−1)+(22−1)+(22−1) . Note that repeated summands are allowed.
In the fourth sample case, we can represent 4=(24−7)+(21−7) . Note that the second summand is negative, which is allowed.
In the fifth sample case, no representation is possible.