C++ 中重新排列的 2 的幂
假设我们有一个正整数 N,我们以任何顺序(包括原始顺序)对数字进行重新排列,使得首位数字非零。我们必须检查能否通过这种方式进行操作,使得生成的结果是一个 2 的幂。因此,如果数字是 46,那么答案将为真。
要解决这个问题,我们将遵循以下步骤 −
定义一个名为 count 的方法,它将 x 作为输入
ret := 0
如果 x 不为 0
ret := ret + x 的最低位数的 10 的幂
x := x / 10
返回 ret
在主方法中执行以下操作 −
x := count(N)
对于 i 的范围从 0 到 31
如果 count(2^i) = x,则返回 true
返回 false
让我们了解一下以下实现以获得更好的理解 −
示例
#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++){
if(count(1 << i) == x) return true;
}
return false;
}
};
main(){
Solution ob;
cout << (ob.reorderedPowerOf2(812));
}输入
812
输出
1
広告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP