একটি সংখ্যা n দেওয়া আছে। n কি ২-এর ঘাত (power of two) কিনা চেক করুন।
উদাহরণ
n = 2048 → আউটপুট: True (২¹¹ = ২০৪৮)
এলগরিদম (বিট ম্যানিপুলেশন)
- যদি
n == 0:False - রিটার্ন
(n & (n-1)) == 0
লজিক: ২-এর ঘাত সংখ্যার বাইনারি রিপ্রেজেন্টেশনে শুধু একটা ১ থাকে। n-1 সেটি সব ১ করে দেয়। AND করলে ০ হবে।
পাইথন কোড
def solve(n):
if n == 0:
return False
return (n & (n - 1)) == 0
n = 2048
print(solve(n)) # আউটপুট: True
ইনপুট / আউটপুট
2048 True