使用 C++ 統計滿足條件的正數有序對的數量,要求兩個數的和為 S,異或值為 K
給定兩個數字 S 和 K。目標是找到滿足條件的有序正數對,要求兩個數的和為 S,異或值為 K。
我們將從 i=1 到 i<S-1 以及 j=i+1 到 j<S 進行遍歷。如果任意一對 (i,j) 滿足 sum==S 且 i^j==K(異或)。則將計數器加 2,因為 (i,j) 和 (j,i) 將被視為不同的對。
讓我們透過示例來理解。
輸入
S=10 K=4
輸出
Ordered pairs such that sum is S and XOR is K: 2
說明
Pairs will be (3,7) and (7,3)
輸入
S=12 K=6
輸出
Ordered pairs such that sum is S and XOR is K: 0
說明
No such pairs possible.
下面程式中使用的方案如下
我們獲取整數 S 和 K。
函式 sumXOR(int s, int k) 獲取 s 和 k 並返回和為 s 且異或為 k 的有序對的數量
將初始變數 count 初始化為 0,用於統計對的數量。
使用兩個 for 迴圈遍歷以生成對。
從 i=1 到 i<s-1 開始。 以及 j=i+1 到 j<s-1。
現在,對於每一對 (i,j),檢查 (i+j==s) && (i^j==k) 是否成立。如果成立,則將計數器加 2,因為 (i,j) 和 (j,i) 是不同的對。
在所有迴圈結束後,count 將包含此類對的總數。
返回 count 作為結果。
示例
#include <bits/stdc++.h>
using namespace std;
int sumXOR(int s, int k){
int count = 0;
for (int i = 1; i < s; i++){
for(int j=i+1; j<s-1; j++){
if( (i+j)==s && (i^j)==k){
count+=2; //(i,j) and (j,i) are two pairs
}
}
}
return count;
}
int main(){
int S = 9, K = 5;
cout <<"Ordered pairs such that sum is S and XOR is K: "<< sumXOR(S,K);
return 0;
}輸出
如果我們執行以上程式碼,它將生成以下輸出:
Ordered pairs such that sum is S and XOR is K: 4
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP