ধরুন আমাদের একটি ভাঙা ক্যালকুলেটর আছে যার প্রদর্শনে একটি সংখ্যা দেখানো হয়েছে, আমরা শুধুমাত্র দুটি অপারেশন করতে পারি -
-
ডবল − এটি ডিসপ্লেতে থাকা সংখ্যাটিকে 2 দ্বারা গুণ করবে, অথবা;
-
হ্রাস - এটি 1,
দ্বারা দেখানো সংখ্যা হ্রাস করবে
প্রাথমিকভাবে, ক্যালকুলেটরটি X সংখ্যাটি প্রদর্শন করছে। Y সংখ্যাটি প্রদর্শন করার জন্য আমাদের ন্যূনতম সংখ্যক ক্রিয়াকলাপ খুঁজে বের করতে হবে।
সুতরাং ইনপুট যদি X =5 এর মত হয় এবং Y 8 হয়, তাহলে আউটপুট হবে 2, হ্রাস হিসাবে, এটি একবার, তারপর দ্বিগুণ
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=0
-
যখন Y> X
-
res :=res + Y mod 2 + 1
-
Y :=Y / 2 যখন Y জোড় হয়, অন্যথায় (Y + 1) / 2
-
-
রিটার্ন res + X - Y
উদাহরণ(পাইথন)
আরো ভালোভাবে বোঝার জন্য নিচের বাস্তবায়নটি দেখি -
class Solution(object): def brokenCalc(self, X, Y): res = 0 while Y > X: res += Y % 2 + 1 Y = Y // 2 if Y % 2 == 0 else (Y + 1)//2 return res + X - Y ob = Solution() print(ob.brokenCalc(5,8))
ইনপুট
5 8
আউটপুট
2