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
S=10 K=4
Đầu ra
Ordered pairs such that sum is S and XOR is K: 2
Giải thích
Pairs will be (3,7) and (7,3)
Đầu vào
S=12 K=6
Đầu ra
Ordered pairs such that sum is S and XOR is K: 0
Giải thích
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
-
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.
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
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -
Ordered pairs such that sum is S and XOR is K: 4