C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で指定された数を減らすために必要な操作の数を数えます


正の整数Kと整数を含む配列Ops[]が与えられます。目標は、Kを0未満になるように減らすために必要な操作の数を見つけることです。操作は-

  • 最初の操作はK+Ops [0]で、最初の要素はK

    に追加されます
  • 後1.K<0になるまでOps[i]をKに追加します。ここで、インデックスiは循環的に変化し続けます。0<=i

−K<0になるまでOps[i]を追加し続けます。 iが最後の要素Ops[N-1]に到達した場合、再びi=0から開始します。循環的に。

まず、配列Ops[]>0のすべての要素の合計を確認します。はいの場合、Kを減らすことはできません。 -1を返します。それ以外の場合は、KにOps [i]を追加し続け、K <0であるかどうかを確認し、はいの場合はループを解除します。

追加後の操作の増分カウント:K +Ops[i]。

例を挙げて理解しましょう。

入力

ops[]= { -4,2,-3,0,2 }, K=5

出力 −数を減らすために必要な操作の数− 3

説明 −kは5です。操作は−

1. K+ops[0]= 5+(-4) = 1
2. K+ops[1]= 1+2 = 3
3. K+ops[2]= 3+(-3) = 0

入力

ops[]= { 5,5,3,-2 }, K=10

出力 −kを減らすことはできません!!

説明 −Kは10です。操作は−

1. K+ops[0]= 10+5= 15
2. K+ops[1]= 15+5= 20
3. K+ops[2]= 20+3= 23
4. K+ops[3]= 23+-2= 22
5. K+ops[0]= 22+5= 27
6. K+ops[1]= 27+5=32
7. …………………

ops [] =5 + 5 + 3-2 =11のすべての要素の合計を早期にチェックすると、11+10は常に+veになります。したがって、Kを-0に減らすことはできません。

以下のプログラムで使用されているアプローチは次のとおりです

  • ランダムな整数で初期化された整数配列ops[]を使用します。

  • 変数Kには正の値が与えられます。

  • 関数countOperations(int op []、int n、int k)は、K配列Ops []とその長さをパラメーターとして受け取り、Kを0未満に減らすために必要な演算を返します。

  • 最初の操作数をカウントで0とします。

  • ops []の要素の合計を計算し、合計に格納します。 sum> =0の場合、-1を返します。

  • k> 0でない場合は、ops[i]とインクリメントカウントを追加し続けます。 k<0の場合ループを解除します。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
long countOperations(int op[], int n, int k){
   long count = 0;
   int sum=0;
   int i=0;
   for(int i=0;i<n;i++){
      sum+=op[i];
   }
   if(sum-k>=0)
      { return -1; } //number k can never be reduced as sum-k is always positive or 0
   while(k>0){
      for(i=0;i<n;i++){
         if(k>0){
            count++;
            k+=op[i];
         }
         else
            { break; }
      }
   }
   return count;
}
int main(){
   int Ops[] = { 1,-1,5,-11};
   int len= sizeof(Ops) / sizeof(Ops[0]);
   int K=10;
   long ans=countOperations(Ops,len,K);
   if(ans==-1)
      { cout<<"K cannot be reduced!!"; }
   else
      { cout<<"Number of operations : "<<ans; }
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Number of operations : 8

  1. C++で指定されたサイズの長方形内で可能な菱形の数を数えます

    高さX幅の寸法の長方形が与えられます。長方形は、点(0,0)を左下隅に持つ2D座標系で表されます。したがって、目標は、これらすべての条件が満たされるように、この長方形内で可能な菱形の数を数えることです- ひし形の面積は0を超えています。 ひし形の対角線はx軸とy軸に平行です。 ひし形には、すべてのコーナーの整数座標があります。 例を挙げて理解しましょう 入力 −長さ=3幅=3 出力 −指定されたサイズの長方形内で可能な菱形の数は次のとおりです。4 説明 −下の図には、height =width=3の長方形があります。また、面積が0を超え、対角線が両方の軸に平行(

  2. 指定された数値の桁を合計するC++プログラム

    これは、C++言語で桁の合計を計算する例です。 例 #include<iostream> using namespace std; int main() {    int x, s = 0;    cout << "Enter the number : ";    cin >> x;    while (x != 0) {       s = s + x % 10;       x = x / 10;