কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: অ্যারে-এর যোগফল ও গুণফল শূন্য নয় তা নিশ্চিত করার ন্যূনতম ধাপ

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

উদাহরণ

যদি ইনপুট হয় A = [-1, 0, 0, 1], তবে আউটপুট হবে 2, কারণ যোগফল ও গুণফল দুটোই ০। দ্বিতীয় ও তৃতীয় উপাদানে ১ যোগ করলে অ্যারে হবে [-1, 1, 1, 1], যোগফল ২ এবং গুণফল -১।

সমাধানের ধাপসমূহ

sum := 0, cnt := 0
n := A এর আকার
for i := 0 থেকে n-1:
    x := A[i]
    sum := sum + x
    cnt := cnt + (x == 0 ? 1 : 0)
যদি sum + cnt == 0: cnt + 1 রিটার্ন করুন
অন্যথায়: cnt রিটার্ন করুন

C++ বাস্তবায়ন

#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++ প্রোগ্রাম: দিয়ে দেয়া আকারের ডোডেকাগন बनाने के तरीক সংখ্যা গণনা

  2. ফিবোনাচ্চি সংখ্যা যেন করা নোডের ওজন এবং X-এর যোগফল C++-এ

  3. N থেকে M-এ যেতে ন্যূনতম ধাপের সংখ্যা বের করা C++-তে

  4. C++-এ দেওয়া সংখ্যার ডিজিটগুলোর যোগফল বের করা