Special Bit Numbers

4.4

23 votes
Basic Programming, Bit Manipulation, Bit manipulation, Easy, Prefix sum, Prefix-Sum
Problem

A number is known as special bit number if its binary representation contains atleast two consecutive 1's or set bits. For example 7 with binary representation 111 is a special bit number. Similarly 3 (11) is also a special bit number as it contains atleast two consecutive set bits or ones.

Now the problem is, You are given an Array of N integers and Q queries. Each query is defined by two integers L, R. You have to output the count of special bit numbers in the range L to R.

Input

Contains integer N, no of Array elements and Q - Total Number of Queries.

Next line contains N integers A[i] defining Array elements.

Next Q lines contains Queries of the type 1LRN

Output

Output  Q lines containing answer for the ith Query.

Constraints

0A[i]109

1N105

1Q105

Sample Input
5 3
3 5 1 12 7
1 3
2 3
1 5
Sample Output
1
0
3
Time Limit: 2.5
Memory Limit: 256
Source Limit:
Explanation

In Query 1 range is [1,3] and there is only one number with consecutive set bits is 3; So ans is 1.

In Query 2 range is [2,3] and there is no number is there with consecutive set bits. So ans is 0.

In Query 3 range is [1,5] and there are 3 numbers with consecutive bits set i.e 3, 12 and 7.

Editor Image

?