মান লেই আমাদের একটি অ্যারে A আছে ০ এবং ১ দিয়ে গঠিত, N[i] কে i-তম সাবঅ্যারে ধরা হয় A[0] থেকে A[i] পর্যন্ত যেটা বাইনারি নম্বর হিসেবে ইন্টারপ্রেট করা হয়। আমাদের একটি বুলিয়ান আন্সার লিস্ট বের করতে হবে, যেখানে answer[i] হবে true যদি এবং কেবল যদি N[i] ৫ দিয়ে বিভাজ্য হয়।
সেজন্য, যদি ইনপুট হয় [0,1,1,1,1,1], তবে আউটপুট হবে [true,false,false,false,true,false]
এটি সমাধান করার জন্য আমরা নিচের ধাপগুলো অনুসরণ করব −
- length := A-এর সাইজ
- ans := length সাইজের একটি অ্যারে, false দিয়ে ফিল করা
- number := A-এর প্রতিটি এলিমেন্ট কনক্যাটেনেট করে একটি বাইনারি ভ্যালু
- i = 0 থেকে length পর্যন্ত লুপ
- যদি number mod 5 == 0 হয়, তবে
- ans[length-i-1] := True
- number := number / 2
- যদি number mod 5 == 0 হয়, তবে
- ans রিটার্ন
বেস্টার বোঝার জন্য নিচের ইম্প্লিমেন্টেশন দেখুন −
উদাহরণ
class Solution:
def prefixesDivBy5(self, A):
length = len(A)
ans = [False] * length
number = int("".join(map(str, A)), 2)
for i in range(length):
if number % 5 == 0:
ans[length - i - 1] = True
number = number >> 1
return ans
ob = Solution()
print(ob.prefixesDivBy5([0,1,1,1,1,1]))
ইনপুট
[0,1,1,1,1,1]
আউটপুট
[True, False, False, False, True, False]