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