-
C++で許可されている他のものとの交換でコストを最小限に抑える
N個の要素を持つ配列があるとします。与えられた操作に従って、配列から要素を削除する必要があります。操作は、配列の任意の2つの数値を選択し、大きい方を削除する必要があるようなものです。この操作に含まれるコストは、小さい方の数と同じです。この操作に基づいて、一度に1つの要素のみを削除し、最小限のコストでタスクを実行する必要があります。配列に{4、2、5}があるとします。私は4と2を取り、コスト2を支払って4を削除し、次にコスト2で5を削除します。 アプローチは単純すぎます。コストは小さいものと同じになることがわかっているので、コストを削減するために、小さいものと他の要素を取り、大きいものを削除す
-
C++で可能なすべてのサブアレイの中で可能な最小LCMおよびGCD
サイズNの配列arrがあるとします。これにはN個の正の数があります。考えられるすべてのサブアレイの最小要素を見つける必要があります。アレイが{2、66、14、521}であり、最小LCMが2、GCDが1であるとします。 貪欲なアプローチを使用してこの問題を解決します。要素の数を減らすとLCMが少なくなり、配列サイズを増やすとGCDが少なくなります。配列から最小の要素を見つける必要があります。これは単一の要素であり、LCMが必要になります。 GCDの場合、GCDはアレイのすべての要素のGCDになります。 例 #include <iostream> #include <algor
-
C++で文字を削除せずに2つの文字列アナグラムを作成するために必要な操作の最小数
同じ長さの2つの文字列があるとすると、文字を削除せずに、2つの文字列のアナグラムを作成するために必要な最小限の変更を見つける必要があります。アナグラムは、同じ文字セットを持つ2つの文字列です。 2つの文字列が「HELLO」であり、ここで「WORLD」が必要な変更の数が3であると仮定します。この場合、3つの文字が異なります。 考え方は単純です。最初の文字列の各文字の頻度を見つけてから、2番目の文字列を調べ、2番目の文字列の文字が周波数配列に存在する場合は、頻度の値を減らします。頻度の値が0未満の場合は、最終カウントを1増やします。 例 #include <iostream> usi
-
配列のGCDをC++でkの倍数にするための最小操作
配列arrと別の値kがあるとします。配列のGCDをkの倍数に等しくするために、最小数の演算を見つける必要があります。この場合、操作は値を増減しています。配列が{4、5、6}のようで、kが5であるとします。4を1増やし、6を1減らすことができるので、5になります。ここでの演算数は2です。 結果を得るには、次の手順に従う必要があります- 手順 − 配列内のすべての要素eについて、手順2と3に従います kの場合、結果を(e mod k)と(k – e mod k)の最小値として増やします。 それ以外の場合、結果は結果+ k – eになります 結果を返す 例 #include <io
-
Cで割り切れる最小の正の整数であり、C ++では範囲[A、B]にありません
3つの整数A、B、およびCがあるとします。XmodC =0であり、Xが[A、B]の範囲にないように、1つの最小整数Xを見つける必要があります。 A、B、Cの値がそれぞれ5、10、4の場合、Xの値は4になります。解を得る手順を見てみましょう- 手順 − Cが[A、B]の範囲にない場合は、結果としてCを返します それ以外の場合は、Bより大きいCの最初の倍数を取得し、その値を返します 例 #include <iostream> using namespace std; int findMinMumber(int a, int b, int c) { i
-
C++で指定された配列の要素の階乗のGCDを検索します
N個の要素を持つ配列Aがあるとします。配列のすべての要素の階乗のGCDを見つける必要があります。要素が{3、4、8、6}であるとすると、階乗のGCDは6です。ここでトリックを確認します。 2つの数値のGCDは、両方の数値を除算する最大の数値であるため、2つの数値の階乗のGCDは、最小の数値自体の階乗の値です。だから3の公約数!と5! 3です! =6. 例 #include <iostream> using namespace std; long fact(int n){ if(n <= 1) return
-
C ++で再帰またはユークリッドアルゴリズムを使用せずに、2つの数値のHCFを検索します
ご存知のように、HCFまたはGCDは、ユークリッドの互除法を使用して簡単に計算できます。ただし、ここでは、ユークリッドアルゴリズムや再帰アルゴリズムを使用せずにGCDまたはHCFを生成する方法を説明します。 2つの数値が16と24として存在するとします。これら2つのGCDは8です。 ここでのアプローチは単純です。これら2つの大きい数が小さい方で割り切れる場合、それはHCFです。そうでない場合は、(小さい/ 2)から1まで始まり、現在の要素が両方の数を割る場合、それがHCFです。 例 #include <iostream> using namespace std; int gcd(
-
ポイントがC++の円の内側にあるかどうかを確認します
1つの円(中心座標と半径)が指定され、別の点も指定されているとします。ポイントが円の内側にあるかどうかを確認する必要があります。それを解決するには、円の中心から与えられた点の距離を見つける必要があります。その距離が半径以下の場合、それは円の内側にあり、そうでない場合はそうではありません。 例 #include <iostream> #include <cmath> using namespace std; bool isInsideCircle(int cx, int cy, int r, int x, int y) { int dist =
-
nCrがC++で指定された素数で割り切れるかどうかを調べます
3つの変数N、R、およびPがあるとします。NとRは、 Nを取得するために使用されます。 C R Pは素数です。 Nかどうかを確認する必要があります C R はPで割り切れる。いくつかの数N=7、R =2、P =3があるとすると、 7 C 2 =21、これは3で割り切れるので、出力はtrueになります。 N C R R! +(N-R)! 例 #include <iostream> using namespace std; int getPower(int n, int p) { int pow = 0; w
-
C++で有理数のLCMを見つける
ここでは、有理数のLCMを見つける方法を説明します。有理数のリストがあります。リストが{2/7、3 / 14、5 / 3}のようであるとすると、LCMは30/1になります。 この問題を解決するには、すべての分子のLCMを計算し、次にすべての分母のgcdを計算し、次に有理数のLCMを計算する必要があります- $$ LCM =\ frac {LCM \:of \:all \:𝑛𝑢𝑚𝑒𝑟𝑎𝑡𝑜𝑟𝑠} {GCD \:of \:all \:𝑑𝑒𝑛𝑜𝑚𝑖𝑖 例 #include <iostream> #include <vector> #inc
-
C++でドラゴン曲線シーケンスのn番目の項を検索します
ここでは、ドラゴン曲線シーケンスのn番目の項を見つけることができるプログラムが表示されます。ドラゴン曲線シーケンスは、無限のバイナリシーケンスです。 1から始まり、各ステップで、前の項の各要素の前後に1と0を交互に追加して、次の項を形成します。 用語1:1 用語2:110 用語3:1101100 用語4:110110011100100 1から始めて、前の用語の各要素の後に1と0を追加します。得られた新しい用語が現在の用語になったら、1からnまでの手順を繰り返して、次の用語を生成します。 例 #include <iostream> using namespace std
-
C++の配列内の各要素のSurpasserCountを検索します
1つの配列Aが与えられたと仮定します。その配列内の各要素の超過者の数を見つける必要があります。超過者は、現在の要素の配列の右側に存在するより大きな要素です。 A ={2、7、5、3、0、8、1}とすると、超過者は{4、1、1、1、2、0、0}であるため、2の右側には4つの数字があります。 4よりも多く、他の人にも同じルールがあります。解決策は非常に単純で、2つのネストされたループがあり、要素ごとに、超過者をカウントして、別の配列に格納します。 例 #include <iostream> using namespace std; void gerSurpassers(int arr[
-
LCMとHCFがC++で与えられたときに他の数を見つけます
数値Aがあり、LCMとGCDの値があるとすると、別の数値Bを見つける必要があります。A=5、LCMが25、HCF =4の場合、別の数値は4になります。 $$𝐴∗𝐵 =𝐿𝐶𝑀∗𝐻𝐶𝐹$$ $$𝐵=\frac {LCM * HCF} {A} $$ 例 #include <iostream> using namespace std; int anotherNumber(int A, int LCM, int GCD) { return (LCM * GCD) / A; } int main() { int A
-
結果の色の組み合わせをC++で見つけます
3色(G、B、Y)の弦があります。これらの関係に基づいて、結果の色を見つける必要があります- B * G =Y Y * B =G G * Y =B 文字列が「GBYGB」の場合はBです。文字列が「BYB」の場合はYになります。 アプローチは単純です。文字列を取得します。与えられた条件を使用して、各アルファベットを隣接する文字と比較し、色を見つけます。 例 #include <iostream> using namespace std; char combination(string s) { char color = s[0]; &nb
-
合計とGCDがC++で与えられている2つの数値を見つけます
2つの数aとbの合計とgcdがあります。数字aとbの両方を見つける必要があります。それが不可能な場合は、-1を返します。合計が6でgcdが2であるとすると、数値は4と2になります。 このアプローチは、GCDが与えられると、その数がその倍数になることが知られているようなものです。次の手順があります 最初の数値をGCDとして選択すると、2番目の数値はsum − GCDになります。 前の手順で選択した数値の合計が合計と同じである場合は、両方の数値を出力します。 それ以外の場合は、数値が存在しないため、-1を出力します。 例 #include <iostream>
-
C++での乗算で整数のオーバーフローをチェックします
2つの数値AとBを乗算した後の結果を求めたいとします。乗算された値が64ビット整数を超えるかどうかを確認する必要があります。 100と200を掛けると、それを超えることはなく、10000000000と-10000000000を掛けると、オーバーフローします。 これを確認するには、いくつかの手順を実行する必要があります。これらは以下のようなものです- 手順 − いずれかの数字が0の場合、それを超えることはありません それ以外の場合、2を1で割ったものが他の値と等しい場合、それを超えることはありません その他の場合は、それを超えます。 例 #include <io
-
C ++で数値が魔法(桁の再帰和が1)であるかどうかを確認します
ここでは、数字がマジックナンバーであるかどうかをチェックできる1つのプログラムを紹介します。数字の再帰的な合計が1の場合、数値はマジックナンバーと呼ばれます。数値が50311 =5 + 0 + 3 + 1 + 1 =10 =1 + 0 =1のようであるとすると、これはマジックナンバーです。 数字が魔法かどうかを確認するには、1桁の数字に達するまで数字を追加する必要があります。 例 #include <iostream> using namespace std; int isMagicNumber(int n) { int digit_sum = 0; &
-
C++で素数の間に数値が挟まれているかどうかを確認します
ここでは、数が素数の間に挟まれているかどうかを確認します。数は、その直後の数が素数の間に挟まれていると言われ、そのすぐ下が素数です。これを解決するには、n-1とn+1が素数であるかどうかを確認します。 例 #include <iostream> #include <set> #define N 100005 using namespace std; bool isPrime(int n) { if (n == 0 || n == 1) return false; for (in
-
C ++でa、b、cからすべてのゼロを削除した後、a + b=cが有効かどうかを確認します
3つの数値a、b、cがあるとすると、数値からすべての0を削除した後、a + b=cかどうかを確認する必要があります。数値がa=102、b =130、c =2005であるとすると、0を削除すると、数値はa + b =c:(12 + 13 =25)になります。これはtrueです 数値からすべての0を削除し、0を削除した後、a + b=cかどうかを確認します。 例 #include <iostream> #include <algorithm> using namespace std; int deleteZeros(int n) { int re
-
バイナリ文字列にC++で同じものが連続して含まれているかどうかを確認します
バイナリ文字列があるとします。私たちのタスクは、文字列に同じ文字が連続しているかどうかを確認することです。同じ文字が連続している場合、それは無効です。それ以外の場合は有効です。その場合、文字列「101010」は有効ですが、「10111010」は無効です。 この問題を解決するために、2つの連続する文字が同じ場合は左から右にトラバースし、それ以外の場合はfalseを返します。 例 #include <iostream> #include <algorithm> using namespace std; bool isConsecutiveSame(string str){