ধরুন আমরা একটি সংখ্যা n এবং আরেকটি মান x, আমাদের পরীক্ষা করতে হবে এটি x এর একটি শক্তি কিনা, যেখানে x হল 2 এর একটি সংখ্যার শক্তি।
সুতরাং, যদি ইনপুটটি n =32768 x =32 এর মত হয়, তাহলে আউটপুটটি True হবে কারণ n হল x^3।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
- cnt :=0
- যদি n 0 না হয় এবং (n AND (n - 1)) 0 এর সমান হয়, তাহলে
- যখন n> 1, do
- n =n/2
- cnt :=cnt + 1
- রিটার্ন সিএনটি মোড (লগ সি বেস 2) 0 এর মতো
- যখন n> 1, do
- মিথ্যে ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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