Sum of numbers with exactly 2 bits set Last Updated : 08 Sep, 2022 Comments Improve Suggest changes Like Article Like Report Given a number n. Find the sum of all numbers up to n whose 2 bits are set. Examples: Input : 10 Output : 33 3 + 5 + 6 + 9 + 10 = 33 Input : 100 Output : 762 Naive Approach: Find each number up to n whose 2 bits are set. If its 2 bits are set add it to the sum. C++ // CPP program to find sum of numbers // upto n whose 2 bits are set #include <bits/stdc++.h> using namespace std; // To count number of set bits int countSetBits(int n) { int count = 0; while (n) { n &= (n - 1); count++; } return count; } // To calculate sum of numbers int findSum(int n) { int sum = 0; // To count sum of number // whose 2 bit are set for (int i = 1; i <= n; i++) if (countSetBits(i) == 2) sum += i; return sum; } // Driver program to test above function int main() { int n = 10; cout << findSum(n); return 0; } Java // Java program to find sum of numbers // upto n whose 2 bits are set public class Main { // To count number of set bits static int countSetBits(int n) { int count = 0; while (n > 0) { n &= (n - 1); count++; } return count; } // To calculate sum of numbers static int findSum(int n) { int sum = 0; // To count sum of number // whose 2 bit are set for (int i = 1; i <= n; i++) if (countSetBits(i) == 2) sum += i; return sum; } // Driver program to test above function public static void main(String[] args) { int n = 10; System.out.println(findSum(n)); } } Python3 # Python program to find # sum of numbers # upto n whose 2 bits are set # To count number of set bits def countSetBits(n): count = 0 while (n): n =n & (n - 1) count=count + 1 return count # To calculate sum of numbers def findSum(n): sum = 0 # To count sum of number # whose 2 bit are set for i in range(1,n+1): if (countSetBits(i) == 2): sum =sum + i return sum # Driver code n = 10 print(findSum(n)) # This code is contributed # by Anant Agarwal. C# // C# program to find sum of // numbers upto n whose 2 // bits are set using System; class GFG { // To count number // of set bits static int countSetBits(int n) { int count = 0; while (n > 0) { n = n & (n - 1); count++; } return count; } // To calculate // sum of numbers static int findSum(int n) { int sum = 0; // To count sum of number // whose 2 bit are set for (int i = 1; i <= n; i++) if (countSetBits(i) == 2) sum += i; return sum; } // Driver Code static public void Main () { int n = 10; Console.WriteLine(findSum(n)); } } // This code is contributed by aj_36 PHP <?php // PHP program to find sum of numbers // upto n whose 2 bits are set // To count number of set bits function countSetBits($n) { $count = 0; while ($n) { $n &= ($n - 1); $count++; } return $count; } // To calculate sum of numbers function findSum($n) { $sum = 0; // To count sum of number // whose 2 bit are set for ($i = 1; $i <= $n; $i++) if (countSetBits($i) == 2) $sum += $i; return $sum; } // Driver Code $n = 10; echo findSum($n); // This code is contributed by anuj_67. ?> JavaScript <script> // Javascript program to find sum of numbers // upto n whose 2 bits are set // To count number of set bits function countSetBits(n) { let count = 0; while (n) { n &= (n - 1); count++; } return count; } // To calculate sum of numbers function findSum(n) { let sum = 0; // To count sum of number // whose 2 bit are set for (let i = 1; i <= n; i++) if (countSetBits(i) == 2) sum += i; return sum; } // Driver program to test above function let n = 10; document.write(findSum(n)); // This code is contributed by Mayank Tyagi </script> Output: 33 Time Complexity : O(n) Space Complexity : O(1) Efficient Approach: The number whose 2 bits are set is of the form 2^x + 2^y and this number is less than n. So we have to find only numbers in the range up to n which is of form 2^i + 2^j where i > 0 and 2^i < n and 0 <= j < i. C++ // C++ program to find sum of numbers // upto n whose 2 bits are set #include <bits/stdc++.h> using namespace std; // To calculate sum of numbers int findSum(int n) { int sum = 0; // Find numbers whose 2 bits are set for (int i = 1; (1 << i) < n; i++) { for (int j = 0; j < i; j++) { int num = (1 << i) + (1 << j); // If number is greater than n // we don't include this in sum if (num <= n) sum += num; } } // Return sum of numbers return sum; } // Driver program to test findSum() int main() { int n = 10; cout << findSum(n); return 0; } Java // Java program to find sum of numbers // upto n whose 2 bits are set public class Main { // To calculate sum of numbers static int findSum(int n) { int sum = 0; // Find numbers whose 2 bits are set for (int i = 1; 1 << i < n; i++) { for (int j = 0; j < i; j++) { int num = (1 << i) + (1 << j); // If number is greater than n // we don't include this in sum if (num <= n) sum += num; } } // Return sum of numbers return sum; } // Driver program to test findSum() public static void main(String[] args) { int n = 10; System.out.println(findSum(n)); } } Python3 # Python3 program to find sum of # numbers upto n whose 2 bits are set # To calculate sum of numbers def findSum(n) : sum = 0 # Find numbers whose 2 # bits are set i = 1 while((1 << i) < n ) : for j in range(0, i) : num = (1 << i) + (1 << j) # If number is greater than n # we don't include this in sum if (num <= n) : sum += num i += 1 # Return sum of numbers return sum # Driver Code n = 10 print(findSum(n)) # This code is contributed # by Smitha C# // C# program to find sum of numbers // upto n whose 2 bits are set using System; public class main { // To calculate sum of numbers static int findSum(int n) { int sum = 0; // Find numbers whose 2 bits are set for (int i = 1; 1 << i < n; i++) { for (int j = 0; j < i; j++) { int num = (1 << i) + (1 << j); // If number is greater than n // we don't include this in sum if (num <= n) sum += num; } } // Return sum of numbers return sum; } // Driver Code public static void Main(String []args) { int n = 10; Console.WriteLine(findSum(n)); } } // This Code is contributed by vt_m. PHP <?php <?php // PHP program to find sum of numbers // upto n whose 2 bits are set // To calculate sum of numbers function findSum($n) { $sum = 0; // Find numbers whose 2 bits are set for ($i = 1; (1 << $i) < $n; $i++) { for ($j = 0; $j < $i; $j++) { $num = (1 << $i) + (1 << $j); // If number is greater than n // we don't include this in sum if ($num <= $n) $sum += $num; } } // Return sum of numbers return $sum; } // Driver Code $n = 10; echo findSum($n); // This code is contributed by Ajit ?> JavaScript <script> // Javascript program to find sum of numbers // upto n whose 2 bits are set // To calculate sum of numbers function findSum(n) { let sum = 0; // Find numbers whose 2 bits are set for (let i = 1; 1 << i < n; i++) { for (let j = 0; j < i; j++) { let num = (1 << i) + (1 << j); // If number is greater than n // we don't include this in sum if (num <= n) sum += num; } } // Return sum of numbers return sum; } let n = 10; document.write(findSum(n)); </script> Output : 33 Time Complexity : O((log n)*(log n)) Space Complexity : O(1) Comment More infoAdvertise with us Next Article Sum of numbers with exactly 2 bits set N nuclode Improve Article Tags : Bit Magic DSA Practice Tags : Bit Magic Similar Reads Print first n numbers with exactly two set bits Given a number n, print first n positive integers with exactly two set bits in their binary representation.Examples : Input: n = 3Output: 3 5 6The first 3 numbers with two set bits are 3 (0011),5 (0101) and 6 (0110)Input: n = 5Output: 3 5 6 9 10 12A Simple Solution is to consider all positive intege 10 min read Count unset bits of a number Given a number n, count unset bits after MSB (Most Significant Bit).Examples : Input : 17 Output : 3 Binary of 17 is 10001 so unset bit is 3 Input : 7 Output : 0 A Simple Solution is to traverse through all bits and count unset bits. C++ // C++ program to count unset bits in an integer #include < 7 min read Maximum sum by adding numbers with same number of set bits Given an array of N numbers, the task is to find the maximum sum that can be obtained by adding numbers with the same number of set bits. Examples: Input: 32 3 7 5 27 28 Output: 34Input: 2 3 8 5 6 7 Output: 14 Approach: Traverse in the array and count the number of set bits for every element.Initial 8 min read Numbers whose bitwise OR and sum with N are equal Given a non-negative integer N, the task is to find count of non-negative integers less than or equal to N whose bitwise OR and sum with N are equal. Examples : Input : N = 3 Output : 1 0 is the only number in [0, 3] that satisfies given property. (0 + 3) = (0 | 3) Input : 10 Output : 4 (0 + 10) = ( 6 min read Sum of bit differences for numbers from 0 to N | Set 2 Given a number N, the task is to calculate the total number of corresponding different bit in the binary representation for every consecutive number from 0 to N. Examples: Input: N = 5 Output: 8 Explanation: Binary Representation of numbers are: 0 -> 000, 1 -> 001, 2 -> 010, 3 -> 011, 4 7 min read Program to find the Nth natural number with exactly two bits set | Set 2 Given an integer N, the task is to find the Nth natural number with exactly two set bits. Examples: Input: N = 4Output: 9Explanation: Numbers with exactly two set bits are 3, 5, 6, 9, 10, 12, .... The 4th term in this series is 9. Input: N = 15Output: 48Explanation: Numbers with exactly two set bits 7 min read Flip bits of the sum of count of set bits of two given numbers Given two numbers A and B, the task is to count the number of set bits in A and B and flip the bits of the obtained sum. Examples: Input: A = 5, B = 7Output: 2Explanation:Binary representation of A is 101.Binary representation of B is 111.Count of set bits in A and B = 2 + 3 = 5.Binary representatio 5 min read Addition of two numbers without carry You are given two positive numbers n and m. You have to find a simple addition of both numbers but with a given condition that there is not any carry system in this addition. That is no carry is added at higher MSBs.Examples : Input : m = 456, n = 854 Output : 200 Input : m = 456, n = 4 Output : 450 6 min read Subset sum queries using bitset Given an array arr[] and a number of queries, where in each query we have to check whether a subset whose sum is equal to given number exists in the array or not. Examples: Input : arr[] = {1, 2, 3}; query[] = {5, 3, 8} Output : Yes, Yes, NoThere is a subset with sum 5, subset is {2, 3}There is a su 9 min read Number of integers with odd number of set bits Given a number n, count number of integers smaller than or equal to n that have odd number of set bits.Examples: Input : 5 Output : 3 Explanation : Integers with odd number of set bits in range 1 to 5 : 0 contains 0 set bits 1 contains 1 set bits 2 contains 1 set bits 3 contains 2 set bits 4 contain 6 min read Like