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

合計と積をゼロとは異なるものにするために必要なステップ数をカウントするC++プログラム


n個の要素を持つ配列Aがあるとします。 1つの操作で、Aにプリセットされた任意の1つの要素で1を追加できます。配列内のすべての要素の合計または積のいずれかがゼロに等しい場合、この操作をもう一度実行できます。配列内のすべての要素の合計と積の両方をゼロとは異なるものにするために必要な最小ステップ数を数える必要がありますか?

したがって、入力がA =[-1、0、0、1]の場合、積と合計の両方が0であるため、出力は2になります。2番目と3番目の要素に1を加算すると、配列は次のようになります。 [-1,1,1,1]の場合、合計は2に等しく、積は-1に等しくなります。

ステップ

これを解決するには、次の手順に従います-

sum := 0
cnt := 0
n := size of A
for initialize i := 0, when i < n, update (increase i by 1), do:
   x := A[i]
   sum := sum + x
   cnt := cnt + (if x is same as 0, then 1, otherwise 0)
return (if sum + cnt is same as 0, then cnt + 1, otherwise cnt)

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;

int solve(vector<int> A) {
   int sum = 0, cnt = 0;
   int n = A.size();
   for (int i = 0; i < n; i++) {
      int x = A[i];
      sum += x;
      cnt += x == 0 ? 1 : 0;
   }
   return sum + cnt == 0 ? cnt + 1 : cnt;
}
int main() {
   vector<int> A = { -1, 0, 0, 1 };
   cout << solve(A) << endl;
}

入力

{ -1, 0, 0, 1 }

出力

2

  1. サイズdで作成できる十二角形の数をカウントするC++プログラム

    数dがあるとします。正方形のタイルと辺の長さが1の通常の三角形のタイルが無数にあると考えてください。これらのタイルを使用して、側面dの通常の十二角形(12辺の多角形)を形成できる方法をいくつ見つける必要があります。答えが大きすぎる場合は、結果mod998244353を返します。 ステップ これを解決するために、次の手順に従います- b := floor of d/2 - 1 c := 1 for initialize i := 2, when i < d, update (increase i by 1), do:    b := b * (floor of

  2. Xとの合計がC++のフィボナッチ数であるノードをカウントします

    ノードの重みを数値として持つ二分木を指定します。目標は、その数がフィボナッチ数であるような重みを持つノードの数を見つけることです。フィボナッチ数列の数は次のとおりです。0、1、1、2、3、5、8、13…。n番目の数はの合計です。 (n-1)番目と(n-2)番目。重みが13の場合、それはフィボナッチ数であるため、ノードがカウントされます。 例 入力 temp=1。値を入力した後に作成されるツリーを以下に示します- 出力 Count the nodes whose sum with X is a Fibonacci number are: 3 説明 we are given with