Computer >> Máy Tính >  >> Lập trình >> C ++

Đế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 trong C ++

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