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 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告