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