C++中计算其与x的和等于与x的异或的数字


我们有一个数字X。目标是在0到X之间找到那些与X相加等于与X进行异或运算的数字。

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

让我们用例子来理解。

输入 - X=6

输出 - 与X相加等于与X异或的数字个数:2

解释 - 数字只有0和1。

输入 - X=20

输出 - 与X相加等于与X异或的数字个数:8

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

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

  • 我们取整数X。

  • 函数sumisXOR(int x)接收x并返回与x相加等于与x异或的数字个数。

  • 将初始计数设置为0。

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

  • 如果i+x==i^x。计数器加1

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

  • 返回计数并打印。

示例

 在线演示

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

输出

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

Count of numbers whose sum with X == XOR with X: 1

更新于:2020年10月31日

116次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告