C++でymod(2をxに累乗)の値を検索します
この問題では、2つの値xとyが与えられます。私たちのタスクは、 y modの値を見つけることです(2をxに累乗) 。
問題を理解するために例を見てみましょう
Input : x = 2, y = 19 Output : 3
説明 −
y % 2x = 19 % 22 = 19 % 4 = 3
ソリューションアプローチ
この問題の簡単な解決策は、2 x の値を直接計算することです。 pow()関数を使用して、y%2 x の値を見つけます 。
この問題を解決する別のアプローチは、ログを使用することです。 y <2 x の値の場合 、余りはyです。この場合、
ログ2 y
また、xの最大値は63で、yの値がオーバーフローする可能性があります。したがって、modはxに等しくなります。
これらすべてを考慮に入れると、次の3つのケースがあります-
ソリューションの動作を説明するプログラムif(log y < x) -> return y
else if(x > 63) -> return y
else -> return (y % pow(2, x))
例
#include <bits/stdc++.h>
using namespace std;
long long int findModVal(long long int y, int x){
if (log2(y) < x)
return y;
if (x > 63)
return y;
return (y % (1 << x));
}
int main(){
long long int y = 82829;
int x = 12;
cout<<"The value of y mod 2^x is "<<findModVal(y, x);
return 0;
}
出力
The value of y mod 2^x is 909
-
C++の各ツリー行で最大値を見つける
二分木があるとすると、その木の各レベルの最大の要素を見つける必要があります。したがって、ツリーが次のような場合- その場合、出力は[3,5,8]になります。 これを解決するには、次の手順に従います- ansという配列を定義します 再帰関数solve()を定義します。これはツリーノードを取り、レベルは最初は0です。このメソッドは-のように機能します。 ノードがnullの場合は、を返します。 level =ansのサイズの場合、ノード値をansに挿入します。それ以外の場合、ans [level]:=ans[level]とノード値の最大値 呼び出しsol
-
C++で左下のツリー値を検索
二分木があるとします。そのツリーの最後の行の左端の値を見つける必要があります。したがって、ツリーが次のような場合- 最後の行が[7、4]であり、左端の要素が7であるため、出力は7になります。 これを解決するには、次の手順に従います- 最初にansとlvl変数を0として定義します solve()と呼ばれる1つのメソッドを定義します。これはツリーノードを取り、レベルは最初は0です。これは次のように機能します- ノードがnullの場合は、を返します。 lvlの場合、ans:=ノードの値およびlvl:=level 解決(ノードの左側、レベル+ 1)