- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

In this problem, we are given an integer n. Our task is to create a program to find the count of integers from i = 0 to n, where sum is equal to XOR i.e. *(n+i) = (n^i).*

**Input: ** n = 4

**Output: **4

**Explanation: **

Considering all values of i from 0 to n,

i = 0, 4 + 0 = 4, 4^0 = 4

i = 1, 4 + 1 = 5, 4^1 = 5

i = 2, 4 + 2 = 6, 4^2 = 6

i = 3, 4 + 3 = 7, 4^3 = 7

i = 4, 4 + 4 = 8, 4^4 = 0

Count = 4

A simple solution is to find the values of the sum of n and i and xor of n and i. Compare both these values and then count the values for which they are equal.

**Step 1: **Loop for all values from i = 0 to n.

**Step 1.1: **Find the value of (n + i).

**Step 1.2: **Find the value of (n^i).

**Step 1.3: **compare values found in step 1.1 and 1.2.**Step 1.4: **If they are equal, increase count.

**Step 2: **Print *count *values.

#include <iostream> using namespace std; int main() { int n = 5; int counter = 0; for(int i=0; i<=n; i++ ) if ( (n+i) == (n^i) ) counter++; cout<<"The count of integers with equal sum and XOR is "<<counter; return 0; }

The count of integers with equal sum and XOR is 2

The method is good but their can be a better solution to the problem, which is using the fact that

If ** n^i = n+i**, then

If the value of n&i = 0, for that we need the two numbers to have opposite set and unset bits. And we need to count such values. Here is a program to do it,

#include <iostream> using namespace std; int countValuesWithEqualSumXOR(int n) { int countUnSetBits=0; while (n) { if ((n & 1) == 0) countUnSetBits++; n=n>>1; } return 1 << countUnSetBits; } int main() { int n = 6; cout<<"The count of integers with equal sum and XOR is "<<countValuesWithEqualSumXOR(n); return 0; }

The count of integers with equal sum and XOR is 2

- Related Questions & Answers
- Count numbers whose sum with x is equal to XOR with x in C++
- Sum of XOR of all subarrays in C++
- Partition Equal Subset Sum in C++
- Sum of XOR of all possible subsets in C++
- Split Array with Equal Sum in C++
- Count minimum bits to flip such that XOR of A and B equal to C in C++
- Count Triplets That Can Form Two Arrays of Equal XOR in C++
- Sum of XOR of sum of all pairs in an array in C++
- Partition to K Equal Sum Subsets in C++
- Find maximum sum possible equal sum of three stacks in C++
- Sum of XOR of all pairs in an array in C++
- XOR of all elements of array with set bits equal to K in C++
- Count numbers whose difference with N is equal to XOR with N in C++
- Count numbers whose XOR with N is equal to OR with N in C++
- XOR Cipher in C++

Advertisements