ধরি আমাদের একটি সংখ্যা n এবং অন্য একটি মান x আছে। আমাদের যাচাই করতে হবে যে n, x-এর ঘাত কিনা, যেখানে x হলো 2-এর ঘাতসংখ্যা।
উদাহরণস্বরূপ, n = 32768 এবং x = 32 হলে আউটপুট হবে True, কারণ n = x³।
সমাধানের ধাপসমূহ
- cnt := 0
- যদি n শূন্য না হয় এবং (n AND (n-1)) শূন্য হয়, তবে:
- যতক্ষণ n > 1, n = n/2 এবং cnt বাড়ান
- cnt mod (log₂c) যদি শূন্য হয় তবে true রিটার্ন করুন
- অন্যথায় false রিটার্ন করুন
উদাহরণ
def find_pow_of_2(n):
return (1 + find_pow_of_2(n / 2)) if (n > 1) else 0
def solve(n, c):
cnt = 0
if n and (n & (n - 1)) == 0:
while n > 1:
n >>= 1
cnt += 1
return cnt % (find_pow_of_2(c)) == 0
return False
n = 32768
x = 32
print(solve(n, x))
ইনপুট
32768, 32
আউটপুট
True