দুটি সংখ্যা c এবং d দেওয়া আছে। অমলের দুটি সংখ্যা a এবং b শুরুতে ০। অমল কিছু অপারেশন করতে চায়। প্রতিটি অপারেশনের আগে একটি পজিটিভ ইন্টিজার k বেছে নেওয়া হয়, যা ব্যবহার করে নিচের একটি অপারেশন করা হয়:
- a এবং b উভয়ে k যোগ করা, অথবা
- a-তে k যোগ, b-তে k বিয়োগ, অথবা
- b-তে k যোগ, a-তে k বিয়োগ।
a=c এবং b=d করার জন্য ন্যূনতম অপারেশন সংখ্যা বের করতে হবে। অসম্ভব হলে -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) odd: return -1 else if c==0 and d==0: return 0 else if c==d: return 1 else: 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, d=5;
cout << solve(c,d) << endl;
}
ইনপুট
3, 5
আউটপুট
2