Medium
You are given two integers num1 and num2.
In one operation, you can choose integer i in the range [0, 60] and subtract 2i + num2 from num1.
Return the integer denoting the minimum number of operations needed to make num1 equal to 0.
If it is impossible to make num1 equal to 0, return -1.
Example 1:
Input: num1 = 3, num2 = -2
Output: 3
Explanation: We can make 3 equal to 0 with the following operations:
It can be proven, that 3 is the minimum number of operations that we need to perform.
Example 2:
Input: num1 = 5, num2 = 7
Output: -1
Explanation: It can be proven, that it is impossible to make 5 equal to 0 with the given operation.
Constraints:
1 <= num1 <= 109-109 <= num2 <= 109public class Solution {
public int makeTheIntegerZero(int num1, int num2) {
for (int i = 0; i <= 60; i++) {
long target = num1 - (long) num2 * i;
long noOfBits = Long.bitCount(target);
if (i >= noOfBits && i <= target) {
return i;
}
}
return -1;
}
}