ধরুন আমাদের দুটি সংখ্যা 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