কম্পিউটার

সংখ্যা c এবং d করতে ন্যূনতম অপারেশন খুঁজে পেতে C++ কোড


ধরুন আমাদের দুটি সংখ্যা c এবং d আছে। অমলের দুটি সংখ্যা a এবং b প্রাথমিকভাবে উভয়ই শূন্য। অমল তাদের কিছু অপারেশন করতে চায়। প্রতিটি অপারেশন করার আগে, কিছু ধনাত্মক পূর্ণসংখ্যা k বাছাই করা হয়, যা পরবর্তীতে নিম্নলিখিত অপারেশনগুলির মধ্যে একটি সম্পাদন করতে ব্যবহৃত হয় -

  • a এবং b, অথবা

    উভয়ের সাথে k সংখ্যা যোগ করুন
  • a-তে k সংখ্যা যোগ করুন এবং b থেকে k বিয়োগ করুন, অথবা

  • b এর সাথে k সংখ্যা যোগ করুন এবং a থেকে k বিয়োগ করুন।

আমাদের ন্যূনতম সংখ্যক ক্রিয়াকলাপগুলি খুঁজে বের করতে হবে যা a এবং b কে সমান করে c এবং পর্যায়ক্রমে করতে হবে। যদি সম্ভব না হয়, ফিরুন -1.

সুতরাং, ইনপুট যদি c =3 এর মত হয়; d =5, তাহলে আউটপুট হবে 2, কারণ k =1 এর জন্য, আমরা তারপর সংখ্যা (1, 1), k =8 এর জন্য, জোড়া হতে পারে (-7, 9), k =7 এর জন্য, এটি হতে পারে (0, 2) এবং k =3 এর জন্য, এটি (3, 5)

হতে পারে

পদক্ষেপ

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

if (c ^ d) is odd, then:
   return -1
otherwise when c is same as 0 and d is same as 0, then:
   return 0
otherwise when c is same as d, then:
   return 1
Otherwise
   return 2

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

#include <bits/stdc++.h>
using namespace std;
int solve(int c, int d){
   if ((c ^ d) & 1)
      return -1;
   else if (c == 0 && d == 0)
      return 0;
   else if (c == d)
      return 1;
   else
      return 2;
}
int main(){
   int c = 3;
   int d = 5;
   cout << solve(c, d) << endl;
}

ইনপুট

3, 5

আউটপুট

2

  1. C++ এ একটি সংখ্যাকে একটি নিখুঁত বর্গ করতে ন্যূনতম সংখ্যাকে ভাগ করতে হবে

  2. C++ এ অ্যারের XOR-কে শূন্য করার জন্য ন্যূনতম অপারেশন

  3. C++-এ ন্যূনতম ফ্লিপ বাম দিকে 1s এবং ডানে 0s করতে হবে

  4. C++-এ অ্যারের GCD-কে k-এর গুণিতক করার জন্য ন্যূনতম ক্রিয়াকলাপ