মান লেন, আমাদের কাছে একটি সংখ্যা n আছে। আমাদের যাচাই করতে হবে সংখ্যাটিতে কেবল প্রথম এবং শেষ পজিশনে দুটি সেট বিট (1) আছে কিনা।
যেমন, ইনপুট হলে n = 17, তবে আউটপুট হবে True কারণ 17-এর বাইনারি রিপ্রেজেন্টেশন 10001, যেখানে শুধু প্রথম এবং শেষে ১ আছে।
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:
- যদি n ১-এর সমান হয়, তবে True রিটার্ন করুন।
- n - 1 যদি ২-এর ঘাত হয় তবে true রিটার্ন করুন অন্যথায় false।
উদাহরণ কোড
def is_pow_of_two(n):
return (n & (n-1)) == 0
def solve(n):
if n == 1:
return True
return is_pow_of_two(n-1)
n = 17
print(solve(n))
ইনপুট
17
আউটপুট
True