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
広告