Search

Concatenation of Consecutive Binary Numbers

Updated: Mar 25, 2021

Given an integer n, return the decimal value of the binary string formed by concatenating the binary representations of 1 to n in order, modulo 109 + 7.

Example 1:

Input: n = 1 Output: 1 Explanation: "1" in binary corresponds to the decimal value 1.  

Example 2:

Input: n = 3 
Output: 27 
Explanation: In binary, 1, 2, and 3 corresponds to "1", "10", and "11". After concatenating them, we have "11011", which corresponds to the decimal value 27. 

Example 3:

Input: n = 12 
Output: 505379714 
Explanation: The concatenation results in "1101110010111011110001001101010111100". The decimal value of that is 118505380540. After modulo 109 + 7, the result is 505379714. 

Constraints:

  • 1 <= n <= 105

Solution:


class Solution {
    public int concatenatedBinary(int n) {
        int mod = 1_000_000_007;
        int result = 0,pow=1;
        for(int i=n;i>0;i--)
        {
            int no = i;
            while(no>0)
            {
             if((no&1)==1) result = (result+pow)%mod;
             no=no>>1;
             pow = (pow*2)%mod;    
            }
            
        }
        return result;
    }
}

18 views0 comments

Recent Posts

See All

A string s is called good if there are no two different characters in s that have the same frequency. Given a string s, return the minimum number of characters you need to delete to make s good. The f

The numeric value of a lowercase character is defined as its position (1-indexed) in the alphabet, so the numeric value of a is 1, the numeric value of b is 2, the numeric value of c is 3, and so on.