-
C++で数値をa^bとして表現できるかどうかを確認します
ここでは、abのような数を表現できるかどうかを確認します。番号125が存在するとします。これは53として表すことができます。別の数値91は、ある整数値の累乗として表すことはできません。 アルゴリズム isRepresentPower(num): Begin if num = 1, then return true for i := 2, i2 <= num, increase i by 1, do val := log(a)/log(i) if val
-
数値がC++で累乗として表現できるかどうかを確認します
ここでは、a b のように、数値を累乗として表すことができるかどうかを確認します。 か否か。番号125が存在するとします。これは53として表すことができます 。別の数値91は、ある整数値の累乗として表すことはできません。 アルゴリズム isRepresentPower(num): Begin if num = 1, then return true for i := 2, i2 <= num, increase i by 1, do val := log(a)/log(i) &n
-
C++で数値をx^y(xをyの累乗)として表現できるかどうかを確認します
ここでは、x y のように、数値を累乗として表すことができるかどうかを確認します。 か否か。番号125が存在するとします。これは53として表すことができます 。別の数値91は、ある整数値の累乗として表すことはできません。 アルゴリズム isRepresentPower(num): Begin if num = 1, then return true for i := 2, i2 <= num, increase i by 1, do val := log(a)/log(i) &n
-
数値がC++で2つの三角数の合計として表現できるかどうかを確認します
このセクションでは、1つの数を2つの三角数の合計として表現できるかどうかを確認します。三角数は以下のようになります- 例から、1、3、6、10はいくつかの三角数であることがわかります。数N(たとえば16)を2つの三角数(6、10)の合計として表す必要があります。 アプローチは非常に簡単です。 N未満のすべての三角数を取得する必要があります。これらの値からセットを作成します。ここで、集合からXと言う数を取り、N – Xが集合に存在するかどうかを確認する必要があります。そうすると、Xは2つの三角数の合計として表すことができます。 例 #include <iostream> #
-
C++で数値をゼロ以外の2の累乗の合計として表すことができるかどうかを確認します
ここでは、数値を2の2の非ゼロ乗の合計として表すことができるかどうかを確認します。したがって、指定された数値Nを(2 x として表すことができることを確認します。 + 2 y 0です。数値が10であるとすると、これは2 3として表すことができます。 + 2 1 。 0の場合。もう1つのケースは、Nが奇数であり、2の累乗の合計として表すことはできません。累乗を0として使用できないため、奇数を取得できません。すべての奇数の場合、その2進表現のLSbは1です 例 #include <iostream> using namespace std; bool isSumofTwos
-
C++で3つの連続する整数の合計として数値を記述できるかどうかを確認します
このセクションでは、数値をツリーの連続した数値として表すことができるかどうかを確認します。数値が27であるとします。これは、8 + 9+10として表すことができます。 これは、2つの異なるアプローチで解決できます。最初のアプローチはナイーブアプローチです。そのアプローチでは、i +(i + 1)+(i + 2)が数値と同じかどうかを確認する必要があります。もう1つの効率的なアプローチは、数値が3で割り切れるかどうかを確認することです。数xを3つの連続する1で表すことができるとすると、x =(y --1)+ y +(y + 1)=3yとなります。したがって、数値は3で割り切れる必要があります。
-
C++で数値に同じ数の設定ビットと未設定ビットがあるかどうかを確認します
このセクションでは、数値の設定ビット数と未設定ビット数が同じであるかどうかを確認します。番号12がそこにあると仮定します。そのバイナリ表現は1100です。これは0と1の数が同じです。 アプローチは簡単です。数値の各ビットをチェックし、それが1の場合は、set_bit_countを増やし、0の場合は、unset_bit_countを増やします。最後に、それらが同じである場合はtrueを返し、そうでない場合はfalseを返します。 例 #include <iostream> using namespace std; bool hasSameSetUnset(int n) { &nbs
-
C++で数値に2つの隣接するセットビットがあるかどうかを確認します
ここでは、数値のバイナリ表現に隣接するセットビットがあるかどうかを確認します。数値12に2つの連続した1があるとします(12 =1100)。 このタイプの番号を確認するためのアイデアは非常に簡単です。数値を1ビットシフトしてから、ビット単位のANDを実行します。ビット単位のANDの結果がゼロ以外の場合、連続する1がいくつかある必要があります。 例 #include <iostream> using namespace std; bool hasConsecutiveOnes(int n) { if((n & (n >> 1)) ==
-
番号がC++のミステリー番号であるかどうかを確認します
ここでは、番号がミステリー番号であるかどうかを確認する方法を説明します。ミステリーナンバーは、2つの数字の合計で表すことができる数字であり、数字は互いに逆になります。より良いアイデアを得るためにコードを見てみましょう。すべてのペアをチェックして、決定を見つける必要があります。 例 #include <bits/stdc++.h> using namespace std; int revNum(int str) { string s = to_string(str); reverse(s.begin(), s.end()); &nb
-
数値がC++の別の数値の累乗であるかどうかを確認します
ここでは、ある数が別の数の累乗であるかどうかを確認します。番号125があり、別の番号5が与えられているとします。したがって、125が5の累乗であることがわかると、trueが返されます。この場合はtrueです。 125 =5 3 。 アルゴリズム isRepresentPower(x, y): Begin if x = 1, then if y = 1, return true, otherwise false pow := 1 while pow < y, do &
-
数値がピタゴラス素数であるかどうかをC++で確認します
ここでは、数値がピタゴラス素数であるかどうかを確認する別のプログラムを表示します。論理に飛び込む前に、ピタゴラス素数は何ですか?ピタゴラス素数は素数であり、4n+1として表すことができます。 そのような数を検出するには、その数が素数であるかどうかを確認する必要があります。素数の場合は、その数を4で割り、余りが1の場合は、ピタゴラス素数になります。いくつかのピタゴラス素数は{5、13、17、29、37、41、53、…}です。 例 #include <iostream> using namespace std; bool isPrime(int n){ fo
-
数値がC++でフルプライムであるかどうかを確認します
ここでは、数値が完全素数であるかどうかを確認する方法を説明します。数が素数であり、そのすべての桁も素数である場合、その数は完全な素数であると言われます。数が37であるとすると、これは完全な素数です。しかし、9は素数ではないため、97は完全な素数ではありません。 効率的なアプローチの1つはそれです。まず、素数ではない数字が存在するかどうかを確認する必要があります。数字は0から9でなければなりません。その範囲では、2、3、5、および7が素数であり、その他は素数ではありません。すべてが素数の場合は、その数が素数であるかどうかを確認します。 例 #include <iostream> u
-
数値がC++でQuartanPrimeであるかどうかを確認します
ここでは、数値がQuartanPrimeであるかどうかを確認する別のプログラムを確認します。ロジックに飛び込む前に、QuartanPrimeの数値を見てみましょう。 Quartan素数は素数であり、x 4として表すことができます。 + y 4 0。 そのような数を検出するには、その数が素数であるかどうかを確認する必要があります。素数の場合は、その数を16で割り、余りが1の場合は、それがQuartan素数です。一部のQuartan素数は{2、17、97、…} 例 #include <iostream> using namespace std; bool isPrime(int
-
C++のb-baseで数値Nが1で始まるかどうかを確認します
数Nと底bがあります。このプログラムでは、基数bの1から始まるかどうかを確認する必要があります。番号6が与えられたと仮定します。バイナリではこれは110なので、1から始まり、ベース4でも12 4になります。 。ここでも1から始まります。 ご存知のように、基数bで数値Nが表される場合、bはm+1ビットシーケンスbmbm-1…b0に変換されます。これは、b mを意味します b m + b m-1 * b m-1 +…+b 0 * b 0 =N。最大数は2*b mになります。 –1.Nはbmにあります ≤N≤2*b m – 1.ここで、mが$ \ lfloor \ log
-
合計と積が両方ともNと同じである2つの数値を見つけるC++プログラム
このチュートリアルでは、両方が次のようになる2つの数字(たとえば「a」と「b」)を見つけるプログラムについて説明します a+b = N and a*b = N are satisfied. 両方の方程式から「a」を削除すると、「b」と「N」の2次方程式が得られます。つまり b2 - bN + N = 0 この方程式には、「a」と「b」の両方の値を与える2つの根があります。行列式を使用して根を見つけると、「a」と「b」の値が次のようになります。 $ a =(N- \ sqrt {N * N-4N)} / 2 \\ b =(N + \ sqrt {N * N-4N)} / 2 $ 例 #i
-
与えられた2つの文字列で珍しい文字を見つけるC++プログラム
この記事では、2つの異なる文字列を比較する際に、一般的でない文字を見つけるプログラムについて説明します。 ご存知のように、文字列は文字の配列に他なりません。したがって、比較のために、一方の文字列の文字をトラバースし、同時にその要素がもう一方の文字列に存在するかどうかを確認します。 最初の文字列をA、2番目の文字列をBとすると、 A-Bになります。 。同様に、B-Aを計算できます。 これらの両方の結果を組み合わせると、次のようになります ( A - B ) ∪ ( B - A ) つまり、両方の文字列の中で珍しい要素です。 例 #include <iostream>
-
ソートされていない2つの配列の和集合と共通部分を見つけるC++プログラム
この記事では、2つの指定されたソートされていない配列の和集合と共通部分を見つけるプログラムについて説明します。 2つのアレイを「A」と「B」で表します。次に、これらの配列の結合はA∪Bで示されます。 これは基本的に、指定された両方の配列のすべての要素の配列です。ただし、各要素は1回だけ繰り返されます。 これを見つけるために、別の配列を作成し、最初の配列からすべての要素をコピーします。次に、2番目の配列の要素をトラバースし、それがユニオン配列にすでに存在するかどうかを確認します。そうでない場合は、ユニオン配列に追加します。 同様に、2つの配列の共通部分はA∩Bで示されます。 これは、指定さ
-
各要素がN以下になるような一意のペアを見つけるC++プログラム
この記事では、N以下の要素を持ち、いくつかの特定の条件に従う一意の数のペアを見つけるプログラムについて説明します- 2つの数値の差の二乗は、これら2つの数値のLCMと等しくなければなりません。 これらの2つの数値のHCFは、任意の2つの連続する数値の積として表すことができます。 この問題を解決するための最良のアプローチは、2つの連続した数(1から開始)を取り、それらの数の積の倍数を見つけることです。次に、倍数の中で、1つのペアの数値を指定するには、ペアの数値が最初に指定された条件を満たすかどうかを確認する必要があります。 たとえば、2と3の場合を考えます。それらの積は6にな
-
整数を一意の自然数のn乗の合計として表現できる方法を見つけるC++プログラム
この記事では、整数(たとえばX)を一意の自然数のn乗の合計として表現する方法を見つけるプログラムについて説明します。 たとえば、X=100およびn=2 次に、100を自然数の2乗の合計として表す3つの方法があります。 100 = 102 100 = 62 + 82 100 = 12 + 32 + 42 + 52 + 72 これは、再帰を使用することで簡単に実行できます。 1から始めて、指定された数のn乗根まで進みます。すべての実行で、与えられた数から自然数のn乗(1から始まり)を、数が未満になるまで減算します。これにより、自然数のn乗の合計として数を表す方法がわかります。 例 #inc
-
与えられた依存関係からすべてのタスクを完了することが可能かどうかをチェックするC++プログラム
この記事では、指定された前提条件に基づいて、指定されたすべてのタスクを完了できるかどうかを確認するプログラムについて説明します。 たとえば、3つのタスクが与えられ、前提条件が[[1、0]、[2、1]、[3、2]]であるとします。 ([1,0]は、「1」のタスクを取得することを意味します。「0」のタスクを最初に完了する必要があります。) 次に、この例では、「0」タスクには前提条件がないため、最初に完了することができます。次に、「0」タスクが完了したため、「1」タスクを完了することができます。同様に、「2」と「3」の両方のタスクを完了することもできます。したがって、この場合の答えは「真」に