![Trending Articles on Technical and Non Technical topics](/images/trending_categories.jpeg)
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count ordered pairs of positive numbers such that their sum is S and XOR is K in C++
We are given two numbers S and K. The goal is to find ordered pairs of positive numbers such that their sum is S and XOR is K.
We will do this by starting from i=1 to i<S-1 and j=i+1 to j<S. If any pair (i,j) has sum==S and i^j==K (XOR). Then increment count by 2 as (i,j) and (j,i) both will be counted as different pairs.
Let’s understand with examples.
Input
S=10 K=4
Output
Ordered pairs such that sum is S and XOR is K: 2
Explanation
Pairs will be (3,7) and (7,3)
Input
S=12 K=6
Output
Ordered pairs such that sum is S and XOR is K: 0
Explanation
No such pairs possible.
Approach used in the below program is as follows
We take integers S and K.
Function sumXOR(int s, int k) takes s and k and returns the count of ordered pairs with sum=s and xor=k
Take the initial variable count as 0 for pairs.
Traverse using two for loops for making pairs.
Start from i=1 to i<s-1. And j=i+1 to j<s-1.
Now for each pair (i,j) check if (i+j==s) && (i^j==k). If true increment count by 2 as (i,j) and (j,i) both are different pairs.
At the end of all loops count will have a total number of such pairs.
Return the count as result.
Example
#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; }
Output
If we run the above code it will generate the following output −
Ordered pairs such that sum is S and XOR is K: 4