ধরুন আমাদের দুটি মান আছে শুরু এবং শেষ, আমাদের এই অপারেশনগুলি ব্যবহার করে শুরু থেকে শেষ রূপান্তর করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করতে হবে -
-
1 দ্বারা হ্রাস
-
2 দ্বারা গুণ করুন
সুতরাং, যদি ইনপুটটি হয় start =2, end =7, তাহলে আউটপুট হবে 3, যেমন আমরা 4 পেতে 2 গুন করতে পারি, তারপর 8 পেতে 2 গুন করতে পারি এবং তারপর 7 পেতে 1 বিয়োগ করতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
উত্তর :=0
-
নিম্নলিখিতটি অসীমভাবে করুন, করুন
-
যদি শেষ <=শুরু হয়, তারপর
-
উত্তর দিন + শুরু - শেষ
-
-
অন্যথায় যখন শেষ বিজোড় হয়, তখন
-
end :=end + 1, ans :=ans + 1
-
-
অন্যথায়,
-
শেষ :=শেষের ভাগফল / 2
-
ans :=ans + 1
-
-
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, start, end): ans = 0 while True: if end <= start: return ans + start - end elif end % 2: end += 1 ans += 1 else: end //= 2 ans += 1 ob1 = Solution() start = 2 end = 7 print(ob1.solve(start, end))
ইনপুট
2, 7
আউটপুট
3