কম্পিউটার

C++ প্রোগ্রাম যোগফল এবং পণ্য শূন্য থেকে ভিন্ন করার জন্য প্রয়োজনীয় ধাপের সংখ্যা গণনা করে


ধরুন আমাদের n উপাদান সহ একটি অ্যারে A আছে। একটি অপারেশনে, আমরা A-তে যে কোনো একটি এলিমেন্ট প্রিসেটের সাথে 1 যোগ করতে পারি। যদি অ্যারের সমস্ত উপাদানের যোগফল বা গুণফল শূন্যের সমান হয়, আমরা এই অপারেশনটি আরও একবার করতে পারি। অ্যারের সমস্ত উপাদানের যোগফল এবং গুণফল উভয়কেই শূন্য থেকে আলাদা করার জন্য আমাদের ন্যূনতম সংখ্যক ধাপগুলি গণনা করতে হবে?

সুতরাং, যদি ইনপুটটি A =[-1, 0, 0, 1] এর মত হয়, তাহলে আউটপুট হবে 2, কারণ পণ্য এবং যোগফল উভয়ই 0। যদি আমরা দ্বিতীয় এবং তৃতীয় উপাদানের সাথে 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. ডোডেকাগনের সংখ্যা গণনা করার জন্য C++ প্রোগ্রাম আমরা d এর আকার তৈরি করতে পারি

  2. নোডগুলি গণনা করুন যার সমষ্টি X এর সাথে C++ এ একটি ফিবোনাচি সংখ্যা

  3. C++ এ N থেকে M-এ পৌঁছানোর ন্যূনতম সংখ্যক ধাপ খুঁজুন

  4. একটি প্রদত্ত সংখ্যার সংখ্যা যোগ করার জন্য C++ প্রোগ্রাম