দুটি সংখ্যা x, y এবং রেঞ্জ left, right দেওয়া আছে। রেঞ্জের বিটগুলো একে অপরের কমপ্লিমেন্ট (বিট ফ্লিপ) কিনা যাচাই করতে হবে। LSB = ১ নম্বর পজিশন।
উদাহরণ
ইনপুট: x = 41, y = 54, left = 2, right = 5
আউটপুট: True
ব্যাখ্যা: ৪১ = 101001, ৫৪ = 110110। ২-৫ পজিশনের বিট: 1001 ও 0110 (কমপ্লিমেন্ট)।
অ্যালগরিদম
temp = x ^ y(XOR দিয়ে বিট পার্থক্য বের করুন)।- রেঞ্জের সব বিট ১ কিনা চেক করুন।
উদাহরণ কোড
def are_all_setbits_in_range(n, left, right):
val = ((1 << right) - 1) ^ ((1 << (left - 1)) - 1)
new_value = n & val
return val == new_value
def solve(x, y, left, right):
temp = x ^ y
return are_all_setbits_in_range(temp, left, right)
x = 41
y = 54
left = 2
right = 5
print(solve(x, y, left, right)) # Output: True
ইনপুট
41, 54, 2, 5
আউটপুট
True