📌  相关文章
📜  给定范围内 x 的计数,使得 x、(x+1) 和 (x+2)、(x+3) 的按位异或相等

📅  最后修改于: 2022-05-13 01:56:07.670000             🧑  作者: Mango

给定范围内 x 的计数,使得 x、(x+1) 和 (x+2)、(x+3) 的按位异或相等

给定一个整数N ,任务是计算[0, 2 N -1]范围内的整数个数(比如x ),使得x⊕(x+1) = (x+2)⊕(x+3) . [其中代表按位异或]

例子

朴素方法:解决给定问题的简单方法是生成 x 在[0, 2 N -1]范围内的所有可能值,并检查它们是否满足给定标准,即x⊕(x+1) = (x+ 2)⊕(x+3)

按照下面提到的步骤来实现这个想法:

  • i = 0 迭代到 N
    • 检查(i ⊕ (i+1)) = ((i+2) ⊕ (i+3))
    • 如果满足条件,则增加此类数字的计数
  • 返回最终计数作为答案。

下面是上述方法的实现:

Python3
# Python3 code to implement the approach
  
# Function to find number of integers 
# satisfying the condition
def countOfvalues(N):
          
    # Stores the resultant count of pairs
    count = 0
  
    for i in range(0, 2**N):
  
       # Iterate over the range
        if i ^ (i + 1) == (i + 2) ^ (i + 3):
            count += 1
  
    return count
  
  
# Driver Code
if __name__ == '__main__':
    N = 3
      
    # Function call
    print(countOfvalues(N))


Python3
# Python code to implement the above approach
  
# Function to calculate 
# the number of possible values
def countOfValues (N):
    return pow(2, N - 1)
  
# Driver code
if __name__ == '__main__':
    N = 3
      
    # Function call
    res = countOfValues(N)
    print(res)


输出
4

时间复杂度: O(2 N )
辅助空间:O(1)

Efficient Approach:这个问题可以基于以下数学思想高效解决:

按照下图更好地可视化这个想法:

插图:

因此得到答案计算2 N-1的值 对于给定的N

下面是上述方法的实现。

Python3

# Python code to implement the above approach
  
# Function to calculate 
# the number of possible values
def countOfValues (N):
    return pow(2, N - 1)
  
# Driver code
if __name__ == '__main__':
    N = 3
      
    # Function call
    res = countOfValues(N)
    print(res)
输出
4

时间复杂度:O(1)
辅助空间:O(1)