C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. C++で偶数インデックスの二項係数の合計を求めます

    数値がnであるとすると、$$ \ left(\ begin {array} {c} n \\ 0 \ end {array} \ right)+ \ left(\ begin {array} {c} n \\ 2 \ end {array} \ right)+ \ left(\ begin {array} {c} n \\ 4 \ end {array} \ right)+ \ left(\ begin {array } {c} n \\ 6 \ end {array} \ right)+ ... \ left(\ begin {array} {c} 4 \\ 0 \ end {array}

  2. C++での反転および追加操作の繰り返しによって作成されたバイナリ文字列のk番目のビットを検索します

    バイナリ文字列sがあるとします。最初は、これは「0」です。ここで、各反復でそれを反転して追加します。したがって、n回目の反復の後、k番目のビットが見つかります。反復回数が4で、k =7であるとすると、-になります。 反復 値(最初は0) 1 01 2 0110 3 01101001 4 0110100110010110 つまり、7番目の ビットは1です。 各反復で、補数を見つけて追加します。したがって、n回目の反復の後、k番目のビットを見つけます 例 #include<iostream> using namespac

  3. C ++の配列内の非反復(個別)要素の合計を検索します

    要素が少ない配列Aがあるとします。配列内のすべての異なる要素の合計を見つける必要があります。したがって、A =[5、12、63、5、33、47、12、63]の場合、個別の要素の合計は160になります。重複する要素は、考慮されると単に無視されます。 順序付けされていないセットを使用して、この問題を効率的に解決できます。 1つのforループを実行し、どの値が最初に来るか、そのadd in sum変数をハッシュテーブルに格納し、次回はこの値を使用しないようにします。 例 #include<iostream> #include<unordered_set> using nam

  4. C++で1/nの10進値で期間の長さを検索します

    数nがあるとします。期間の長さを1/nの10進値で見つける必要があります。したがって、nの値が7の場合、1/7=0です。142857 142857…太字のその部分が繰り返されています。したがって、ここでの期間の長さは6です。 数値nの場合、出力にn個の異なる剰余が存在する可能性がありますが、一部の初期剰余は繰り返されないため、期間は最初の剰余から開始されない場合があります。したがって、期間の剰余が選択されていることを確認し、(n + 1)番目の剰余から開始して、次の出現を探し始める必要があります。 (n + 1)番目の剰余と次の出現の間の距離は、期間の長さです。 例 #include<

  5. C ++で繰り返し減算してすべての要素を同じにした後、最大配列合計を見つけます

    n個の要素の配列があるとします。すべての要素が同じになるように、すべての要素の可能な最大合計を見つけます。許可される操作は、任意の2つの要素を選択し、それらの大きい方を2つの絶対差で置き換えることだけです。要素が[9、12、3、6]のようなものだとします。その場合、出力は12になります。したがって、最初にA[1]をA[1] – A [3] =12 – 6 =6に置き換えます。したがって、要素は[9、6、3、6]になり、次にA[を置き換えます。 3] with A [3] – A [2] =6 – 3 =3。したがって、要素は[9、6、3、3]です。次に、A[0]をA[0] – A [1] =9

  6. C++で厳密に増加するサブアレイの最大合計を見つける

    n個の整数の配列があるとします。厳密に増加するサブ配列の最大合計を求めます。したがって、配列が[1、2、3、2、5、1、7]のような場合、合計は8になります。この配列には、厳密に増加する3つのサブ配列があります。これらは{1、2、3}、{2 、5}および{1、7}。最大合計サブ配列は{1、7}です。 この問題を解決するには、最大合計と現在の合計を追跡する必要があります。各要素arr[i]について、これがarr [i – 1]より大きい場合は、これを現在の合計に加算します。それ以外の場合、arr[i]は別のサブアレイの開始点です。したがって、現在の合計を配列として更新します。現在の合計を更新す

  7. C++プログラムの各放射ステーションの最終放射

    直線上にN個の駅があるとします。それらのそれぞれは、放射電力の同じ非負の電力を持っています。すべてのステーションは、次の方法で隣接するステーションの放射電力を増やすことができます。 放射電力Rのステーションiが、(i – 1)番目のステーションの放射電力をR-1だけ増加させ、(i-2)番目のステーションの放射電力をR-2だけ増加させ、(i + 1)番目のステーションの放射電力を増加させるとします。 R-1による放射電力、(i + 2)R-2によるステーションの放射電力。後で。したがって、たとえば、配列がArr =[1、2、3]の場合、出力は3、4、4になります。新しい放射は[1 +(2 –

  8. C++で指定された周囲と面積から直方体の最大体積を求めます

    面積Aと周囲長Pがあるとすると、与えられた周囲長と表面積から直方体の形で作ることができる最大体積を見つける必要があります。したがって、Pが24でAが24の場合、出力は8になります。 直方体の特定の周囲長P=4(長さ+幅+深さ)でわかっているように、面積の場合、A =2(長さ*幅+幅*深さ+長さ*深さ)になり、体積はV =(長さ)になります。 *幅*深さ) 例 #include<iostream> #include<cmath> using namespace std; float maxVolumeCuboid(float Peri, float Area) { &n

  9. C++で無限の線上でターゲットに到達するための最小の動きを見つけます

    無限の数直線に数直線があるとします。 (-infから+ inf)。 0から始めて、説明したように移動してターゲットに到達する必要があります。 i番目の移動では、左または右のいずれかのステップに進むことができます。必要な最小移動数を見つける必要があります。ターゲットが2であるとすると、最小ステップは3になります。0から1まで、1から-1まで、および-1から2まで。 この問題を解決するために、覚えておくべき重要なポイントがいくつかあります。ターゲットが負の場合、数直線が同じであるため、これを正と見なします。解決するために、アイデアは可能な限り一方向に移動します。したがって、0から1に移動し、1か

  10. C++で最大Nまでのログを計算するために必要なログ値の最小数を見つけます

    log(x * y)=log(x)+ log(y)であることがわかっています。したがって、1からNまでのすべてのログ値を計算するために必要なログ値の最小数を確認します。したがって、Nが6の場合、log(1)からlog(6)のように、出力は3になります。 log(1)を除いて、3つのログ値が必要です。 log(1)は常に0であるため、無視します。ここで、log(2)とlog(3)について、を見つける必要があります。その後、log(4)の場合はlog(2)+ log(2)になりますが、log(2)の値がわかっているため、これを再度計算することはありません。log(5)の場合は計算する必要があります

  11. C++プログラムですべてのガソリンポンプを訪問する最初の循環ツアーを見つけます

    円があり、円上にn個のガソリンポンプがあるとします。 -のような2つのデータセットがあります すべてのガソリンポンプが持つガソリンの量 あるガソリンポンプから別のガソリンポンプまでの距離。 トラックが円を完成できる最初のポイントを計算します。 1リットルのガソリンの場合、トラックは1単位の距離を移動できます。ガソリンポンプが4つあり、ガソリンの量があり、次のガソリンポンプからの距離が[(4、6)、(6、5)、(7、3)、(4、5)]のようになっているとします。トラックが循環ツアーを行うことができる最初のポイントは、2番目のガソリンポンプです。出力はstart=1(2番目のパトロールポンプ

  12. C++で数を完全な正方形にするために分割する最小数を見つけます

    数Nがあるとします。完全な正方形にするために、Nを除算する最小数を見つける必要があります。したがって、N =50の場合、最小数は2であり、50/2 =25であり、25は完全な正方形です。 数が偶数の異なる因子を持っている場合、その数は完全な平方です。したがって、Nの素因数を見つけ、各素因数のべき乗を見つけようとします。パワーが奇数であるすべての素因数を見つけて乗算します。 例 #include<iostream> #include<cmath> using namespace std; int findMinimumNumberToDivide(int n) { &n

  13. C ++プログラムで配列の最初、2番目、3番目の最小要素を検索します

    n個の要素の配列があるとします。配列内の1番目、2番目、3番目の最小要素を見つける必要があります。最初の最小値はアレイの最小値であり、2番目の最小値は最小ですが最初の最小値よりも大きく、同様に3番目の最小値は最小ですが2番目の最小値よりも大きくなります。 各要素をスキャンしてから要素を確認し、この問題を解決するために1番目、2番目、3番目の最小要素の条件を関連付けます。 例 #include<iostream> using namespace std; int getThreeMins(int arr[], int n) {    int first = IN

  14. 少なくともk点がC++の円の内側にあるような最小半径を見つけます

    いくつかの点と1つの整数kがあるとします。 k点をカバーするために、中心が(0、0)にある円の最小半径を見つける必要があります。したがって、点が(1、1)、(-1、-1)、(1、-1)、およびk =3のような場合、半径は2になります。 ここでは、各ポイントと(0、0)の間のユークリッド距離を見つけ、距離を並べ替えて、並べ替え後にk番目の要素を返します。 例 #include<iostream> #include<algorithm> using namespace std; struct point{    int x, y; }; int min

  15. C++でマトリックスの最後に到達するために必要な最小ステップを見つける

    正の整数を持つ2D行列があるとします。マトリックスの最後(右下のセル)に移動するために必要な最小ステップを見つける必要があります。セル(i、j)にいる場合は、セル(i、j + mat [i、j)に移動できます。 ])または(i + mat [i、j]、j)、境界を越えることはできません。したがって、行列が-のような場合 2 1 2 1 1 1 1 1 1 出力は2になります。パスは(0、0)→(0、2)→(2、2)になります。 ここでは、動的計画法を使用してこれを解決します。セル(i、j)にいるとすると、(n-1、n-1)セルに到達し

  16. C++で階乗がxで割り切れる最初の自然数を見つけます

    階乗がxで割り切れる最初の自然数を見つけなければなりません。 xはユーザーによって指定されます。したがって、x =16の場合、出力は6になります。 mod16=0。この問題を解決するために一般的なアプローチを使用します。 1!、2!、…を繰り返しカウントします。 n! xを使用して除算性を確認します。モジュラスが0の場合は、停止して数値を返します。 例 #include<iostream> using namespace std; int getNumber(int x) {    int fact = 1;    int i = 0; &n

  17. C++で二分木の垂直方向の走査でk番目のノードを見つけます

    二分木と値Kがあるとします。タスクは、垂直方向の走査でK番目のノードを出力することです。そのようなノードが存在しない場合は、-1を返します。したがって、ツリーが以下のようになっている場合- 垂直方向の走査は-のようなものです 4 2 1 5 6 3 8 7 9 したがって、K =3の場合、結果は1になります。 アプローチは簡単です。垂直方向の走査を実行し、現在のノードがk番目のノードであるかどうかを確認し、そうである場合は戻ります。 例 #include<iostream> #include<map> #include<vector> #incl

  18. C++で指定されたN個の整数の1つを正確に含む最大の区間を見つけます

    N個の異なる整数の配列があるとします。区間[L、R]内の最大要素を見つけて、区間に指定されたN個の整数の1つと1 <=L <=R <=10 5が含まれるようにする必要があります。 。 したがって、配列がArr =[5、10、200]のようである場合、出力は99990になります。したがって、可能な間隔はすべて[1、9]、[6、199]、および[11、100000]です。最後のものは99990のような最大整数を持っています アイデアは単純です。間隔に含める要素を修正します。ここで、他の要素を重ねることなく、間隔を左右に拡張する方法を見ていきます。したがって、最初に配列を並べ替える必要がありま

  19. C ++で(x%k)*(x / k)==nとなるような最小のxを見つけます

    2つの正の整数nとkが与えられ、(x%k)*(x / k)がnと同じになるように、正の整数xを見つける必要があります。したがって、nとkがそれぞれ4と6の場合、出力は10になります。したがって、(10%6)*(10/6)=4です。 x%kの値は[1からk – 1]の範囲にあることがわかっているので(0は含まれません)ここで、nを除算する範囲で可能な整数を見つけるため、与えられた方程式は次のようになります。 * k)/(x%k)+(x%k) 例 #include<iostream> using namespace std; int minValue(int x, int y){ &

  20. C++で指定された数字で形成できる最大の数を見つけます

    数字の配列があるとします。配列のすべての桁を使用して取得できる最大数を見つける必要があります。したがって、配列が[3、3、9、6、2、5]のような場合、最大数は965332になります。 この問題から、数字を昇順ではなく簡単に並べ替えてから印刷できることがわかります。しかし、より効率的な方法でこれを解決できます。サイズ10の配列を1つ作成して各桁の頻度を格納し、それに応じて9から0までの数値を出力できます。 例 #include <iostream> #include <string> using namespace std; int maxNumFromNum(int

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:101/300  20-コンピューター/Page Goto:1 95 96 97 98 99 100 101 102 103 104 105 106 107