C++ 中计算与 N 进行异或等于与 N 进行或运算的数字


我们有一个数字 N。目标是找到 0 到 N 之间与 N 进行或运算的结果等于与 N 进行异或运算结果的数字。

我们将通过遍历从 i=0 到 i<=N 的数字来实现,对于每个 i,如果 (N^i==i | N),则计数器加 1。

让我们通过例子来理解。

输入 − X=6

输出 − 与 N 进行或运算等于与 N 进行异或运算的数字个数:2

解释 − 数字是 0 和 1。

输入 − X=20

输出 − 与 N 进行或运算等于与 N 进行异或运算的数字个数:8

解释 − 数字是 0, 1, 2, 3, 8, 9, 10, 11

下面程序中使用的方案如下:

  • 我们取整数 N。

  • 函数 orisXOR(int n) 取 n 并返回与 n 进行或运算等于与 n 进行异或运算的数字个数。

  • 将初始计数设置为 0。

  • 从 i=0 遍历到 i<=n。

  • 如果 i|n==i^n,则计数器加 1。

  • 在 for 循环结束时,计数器将包含所需的结果。

  • 返回计数并打印。

示例

 在线演示

#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int orisXOR(int n){
   int count = 0;
   for (int i = 0; i <= n; i++){
      if((n|i)==(i^n))
         { count++; }
   }
   return count;
}
int main(){
   int N = 15;
   int nums=orisXOR(N);
   cout <<endl<<"Count of numbers whose OR with N == XOR with N: "<<nums;
   return 0;
}

输出

如果我们运行上述代码,它将生成以下输出:

Count of numbers whose OR with N == XOR with N: 1

更新于:2020-10-31

80 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告