Chúng ta được cho hai số S và K. Mục đích là tìm các cặp số dương có thứ tự sao cho tổng của chúng là S và XOR là K.
Chúng ta sẽ làm điều này bằng cách bắt đầu từ i =1 đến i
Hãy cùng hiểu với các ví dụ.
Đầu vào
Đầu ra
Giải thích
Đầu vào
Đầu ra
Giải thích
Chúng tôi lấy các số nguyên S và K.
Hàm sumXOR (int s, int k) nhận s và k và trả về số lượng các cặp có thứ tự với sum =s và xor =k
Lấy số lượng biến ban đầu là 0 cho các cặp.
Traverse bằng cách sử dụng hai vòng lặp for để tạo cặp.
Bắt đầu từ i =1 đến i
Bây giờ đối với mỗi cặp (i, j) hãy kiểm tra xem (i + j ==s) &&(i ^ j ==k). Nếu số gia tăng đúng là 2 như (i, j) và (j, i) thì cả hai đều là các cặp khác nhau.
Ở cuối tất cả các vòng đếm sẽ có tổng số các cặp như vậy.
Trả lại kết quả là số lượng.
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau - 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.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
Ví dụ
#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;
}
Đầu ra
Ordered pairs such that sum is S and XOR is K: 4