#matest3. 位运算

位运算

位运算

时间限制:1000 ms 内存限制:256 MiB

题目描述

lowbit(x)\text{lowbit}(x) 表示 xx 在二进制下 11 的最低位(从 00 开始计算),例如 lowbit((1)10)=lowbit((1)2)=0\text{lowbit}((1)_{10})=\text{lowbit}((1)_2)=0lowbit((10)10)=lowbit((1010)2)=1\text{lowbit}((10)_{10})=\text{lowbit}((1010)_2)=1lowbit((32)10)=lowbit((100000)2)=5\text{lowbit}((32)_{10})=\text{lowbit}((100000)_2)=5lowbit((100)10)=lowbit((1100100)2)=2\text{lowbit}((100)_{10})=\text{lowbit}((1100100)_2)=2

TT 次询问区间 [l,r][l,r] 中有多少个 i(lir)i(l\le i\le r) 满足 lowbit(i)<lowbit(i+1)\text{lowbit}(i)<\text{lowbit}(i+1)

输入格式

第一行一个正整数 TT

接下来 TT 行,每行两个正整数,表示 [l,r][l,r]

输出格式

TT 行,每行一个整数,表示答案。

样例

输入 #1

10
1 1
2 5
2 6
3 7
3 8
4 16
123 456
114514 1919810
114514 19198108933643
998244353 1000000007

输出 #1

1
2
2
3
3
6
167
902648
9599054409565
877828

数据范围

对于 40%40\% 的数据,保证 T5×103T\le 5\times 10^3rl103r-l\le 10^3

对于另外 10%10\% 的数据,保证其与样例数据完全一致。

对于另外 10%10\% 的数据,保证 l=rl=r

对于 100%100\% 的数据,保证 1T1051\le T\le 10^51lr10181\le l\le r\le 10^{18}