ধরুন আমাদের একটি সংখ্যা N আছে, এর বাইনারি উপস্থাপনায় আমাদের পরপর দুটি 1 এর মধ্যে সবচেয়ে দীর্ঘতম দূরত্ব খুঁজে বের করতে হবে। যদি কোন দুই পরপর 1 না থাকে, তাহলে 0 ফেরত দিন।
সুতরাং, যদি ইনপুট 71 এর মত হয়, তাহলে আউটপুট 4 হবে, কারণ বাইনারিতে 71 হল 1000111। এখন চারটি আছে, এবং প্রথম 1 এবং দ্বিতীয় 1টি 4 দূরত্বে রয়েছে। অন্য সবগুলি এক দূরত্ব দূরে। তাই দীর্ঘতম দূরত্ব এখানে 4।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
K :=N
এর বাইনারি উপস্থাপনার বিটের একটি তালিকা তৈরি করুন -
সর্বোচ্চ :=0, C :=0, S :=0
-
পতাকা :=মিথ্যা
-
আমি 0 থেকে K এর আকারের মধ্যে, কর
-
যদি K[i] হয় '1' এবং C হয় 0 এবং পতাকা হয় False, তাহলে
-
C:=i
-
পতাকা :=সত্য
-
-
অন্যথায় যখন K[i] '1' এবং পতাকা হয়, তখন
-
S:=i
-
যদি Max
-
সর্বোচ্চ :=|S-C|
-
-
C:=S
-
-
-
রিটার্ন ম্যাক্স
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def solve(N): B = bin(N).replace('0b','') K = str(B) K = list(K) Max = 0 C = 0 S = 0 Flag = False for i in range(len(K)): if K[i] is '1' and C is 0 and Flag is False: C = i Flag = True elif K[i] is '1' and Flag: S = i if Max<abs(S-C): Max = abs(S-C) C = S return Max n = 71 print(solve(n))
ইনপুট
71
আউটপুট
4