给你一个正整数 n ,你可以执行下述操作 任意 次: n 加上或减去 2 的某个 幂 返回使 n 等于 0 需要执行的 最少 操作数。 如果 x == 2i 且其中 i >= 0 ,则数字 x 是 2 的幂。请给出代码
时间: 2023-03-10 16:30:06 浏览: 91
我的代码如下:int get_min_ops(int n) {
int result = 0;
while (n != 0) {
int i = 0;
while (n % (1 << i) == 0) {
i += 1;
}
if (n % (1 << (i - 1)) == 0) {
n -= (1 << (i - 1));
} else {
n += (1 << (i - 1));
}
result += 1;
}
return result;
}
相关问题
用python完成代码,给你一个正整数 n ,你可以执行下述操作 任意 次: n 加上或减去 2 的某个 幂 返回使 n 等于 0 需要执行的 最少 操作数。
首先,你可以使用位运算来计算出这个整数n需要最少操作数的结果。例如,如果 n 为 8,只需要执行 3 次操作,即 n 加上 2 的 3 次方,即 8 + 8 = 16,再减去 2 的 3 次方,即 16 - 8 = 8,最后减去 2 的 0 次方,即 8 - 8 = 0。
用python完成这道题目,给你一个正整数 n ,你可以执行下述操作 任意 次: n 加上或减去 2 的某个 幂 返回使 n 等于 0 需要执行的 最少 操作数。
你可以用位运算来解决这个问题。首先,你可以把 n 转换成二进制形式,然后把它的最后一位置为 0,这样就可以使 n 减少 2 的幂数。然后,你可以继续移除 n 的最后一位,直到 n 为 0。每移除一个位,你都可以减少 2 的幂数。这样,你就可以计算出需要执行的最少操作数。