C++で2のパワーを並べ替えました
正の整数Nがあるとすると、先頭の数字がゼロ以外になるように、任意の順序(元の順序を含む)で数字を並べ替えます。結果の数値が2の累乗になるような方法でこれを実行できるかどうかを確認する必要があります。したがって、数値が46のような場合、答えは真になります。
これを解決するには、次の手順に従います-
-
countというメソッドを定義します。これはxを入力として受け取ります
-
ret:=0
-
xが0ではない間
-
ret:=ret + 10^xの最後の桁
-
x:=x / 10
-
-
retを返す
-
メインの方法から、次のようにします-
-
x:=count(N)
-
0から31の範囲のiの場合
-
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
-
数値の累乗を計算するC++プログラム
数値の累乗はx^yとして計算できます。ここで、xは数値、yはその累乗です。 たとえば。 Let’s say, x = 2 and y = 10 x^y =1024 Here, x^y is 2^10 数値の累乗は、再帰的および非再帰的プログラムを使用して計算できます。これらのそれぞれは次のように与えられます。 非再帰的プログラムを使用した数の力 非再帰的プログラムを使用して数の累乗を見つけるプログラムは次のように与えられます- 例 #include<iostream> using namespace std;
-
PythonでReorderedPowerof2を見つけるプログラム
正の整数Nがあるとすると、先頭の数字がゼロ以外になるように、任意の順序(元の順序を含む)で数字を並べ替えます。結果の数値が2の累乗になるような方法でこれを実行できるかどうかを確認する必要があります。 したがって、入力がN =812のような場合、出力はTrueになります これを解決するには、次の手順に従います- i:=1 i <=1000000000、実行 s:=文字列としてのi s:=sの文字を並べ替える 文字列としてのt:=n t:=tの文字を並べ替える sがtと同じ場合、 Trueを返す i:=i * 2 Fa