kを超えずにコピー操作をカウントするC++コード
n個の要素と別の数kの配列Aがあるとします。キャンディーの山はn個あります。 i番目の山にはA[i]個のキャンディーがあります。 2つのインデックスiとj(i!=j)で操作を実行してから、別のA[i]個のキャンディーをA[i]に追加できます(A [i]は減少しません)。この操作は何度でも実行できますが、残念ながら、一部のパイルにk個を超えるキャンディーが厳密に含まれていると、操作を実行できなくなります。この操作を実行できる最大回数を見つける必要があります。
したがって、入力がA =[1、2、3]のような場合。 k =5の場合、出力は5になります。これは、i =0を取ることができ、j =1の場合は3回実行でき、j=2の場合は2回実行できるためです。つまり、合計5回です。
ステップ
これを解決するには、次の手順に従います-
ans := 0 n := size of A sort the array A for initialize i := 1, when i < n, update (increase i by 1), do: ans := ans + (k - A[i]) return ans
例
理解を深めるために、次の実装を見てみましょう-
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int k){ int ans = 0; int n = A.size(); sort(A.begin(), A.end()); for (int i = 1; i < n; i++){ ans += (k - A[i]) / A[0]; } return ans; } int main(){ vector<int> A = { 1, 2, 3 }; int k = 5; cout << solve(A, k) << endl; }
入力
{ 1, 2, 3 }, 5
出力
5
-
C++での3または7の倍数
数nが与えられた場合、nまでの3または7の倍数の数を見つける必要があります。例を見てみましょう。 入力 100 出力 43 100までの3または7の合計43の倍数があります。 アルゴリズム 番号nを初期化します。 カウントを0に初期化します。 3から繰り返すループを作成します n。へ 現在の数が3で割り切れる場合は、カウントを増やします または7。 実装 以下は、C++での上記のアルゴリズムの実装です #include <bits/stdc++.h> using namespace std; int getMultiplesCoun
-
C++でバイナリ文字列「ab」を解放するための操作の数
「ab」を含むことができる文字列が与えられ、タスクは文字列から「ab」を削除または削除するために必要な操作の数を計算することです。したがって、私たちのタスクは、最初に文字列に「ab」が含まれているかどうかを確認することです。含まれている場合は、文字列「ab」を解放する必要があります。 入力 − string str =ababaa 出力 −バイナリ文字列「ab」を解放するための操作の数は− 4 説明 −文字列からわかるように、「ab」パターンが2回発生しているため、「ab」を「bba」に置き換えて、操作の数を1にし、文字列をbbaabaaにします。ここでも、「ab」を「bba」に置き