在C ++中重新排序了2的幂
假设我们有一个正整数N,我们以任何顺序(包括原始顺序)对数字重新排序,以使前导数字不为零。我们必须检查是否可以通过这种方式来使所得的数字为2的幂。因此,如果该数字类似于46,则答案是正确的。
为了解决这个问题,我们将遵循以下步骤-
定义一个称为count的方法,它将x作为输入
ret:=0
当x不为0时
ret:=ret+10^x的最后一位
x:=x/10
返回ret
从主要方法中执行以下操作-
x:=计数(N)
当我在0到31的范围内
如果count(2^i)=x,则返回true
返回假
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int count(int x){
int ret = 0;
while(x){
ret += pow(10, x % 10);
x /= 10;
}
return ret;
}
bool reorderedPowerOf2(int N) {
int x = count(N);
for(int i = 0; i < 32; i++){
f(count(1 << i) == x) return true;
}
return false;
}
};
main(){
Solution ob;
cout << (ob.reorderedPowerOf2(812));
}输入值
812
输出结果
1
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短