- Trending Categories
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 smaller numbers whose XOR with n produces greater value in C++
We are given an integer number let’s say, num and the task is to count the smaller numbers less than num whose XOR with num will result in a value greater than the XOR value..
The truth table for XOR operation is given below
A | B | A XOR B |
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
Input − int num = 11
Output − Count of smaller numbers whose XOR with n produces greater value are − 4
Explanation −
We are given with the num as 11 which means we need to find XOR of num with the numbers less than num. So the numbers are 1 XOR 11 < 11(FALSE), 2 XOR 11 < 11(FALSE), 3 XOR 11 < 11(FALSE), 4 XOR 11 > 11(TRUE), 5 XOR 11 > 11(TRUE), 6 XOR 11 > 11(TRUE), 7 XOR 11> 11(TRUE), 8 XOR 11< 11(FALSE), 9 XOR 11 < 11(FALSE), 10 XOR 11 < 11(FALSE).
Input − int num = 12
Output − Count of smaller numbers whose XOR with n produces greater value are − 3
Explanation −
We are given with the num as 12 which means we need to find XOR of num with the numbers less than num. So the numbers are 1 XOR 12 > 12(TRUE), 2 XOR 12 > 12(TRUE), 3 XOR 12 > 12(TRUE), 4 XOR 12 < 12(FALSE), 5 XOR 12 < 12(FALSE), 6 XOR 12 < 12(FALSE), 7 XOR 12< 12(FALSE), 8 XOR 12< 12(FALSE), 9 XOR 12 < 12(FALSE), 10 XOR 12 < 12(FALSE), 11 XOR 12 < 12(FALSE).
Approach used in the below program is as follows
Input an integer element and store it in a variable named num.
Pass the value of num to the function for further processing
Create a temporary variable count to store the result.
Start loop WHILE till num > 0
Inside the loop, check IF num & 1 == TRUE then set the count as count + pow(2, temp)
Increment the value of temp by 1
And set num to num >> = 1
Return the count
Print the result
Example
#include using namespace std; //Count smaller numbers whose XOR with n produces greater value int XOR_greater(int n){ int temp = 0; int count = 0; while (n > 0){ if ((n&1) == 0){ count += pow(2, temp); } temp++; n >>= 1; } return count; } int main(){ int n = 20; cout<<"Count of smaller numbers whose XOR with n produces greater value are: "<<XOR_greater(n) << endl; return 0; }
Output
If we run the above code it will generate the following output −
Count of smaller numbers whose XOR with n produces greater value are: 11