1660: 数位翻转
金币值:2
定数:1
时间限制:1.000 s
内存限制:128 M
正确:0
提交:0
正确率:0.00% 命题人:
题目描述
用记号(x)n表示x是一个n进制数。
定义对整数x的一次操作是翻转x的任意一个二进制位 (将0改为1或是将1改为0) 。例如, 十进制整 数(4)10 的二进制表示是(100)2 ,对它进行一次操作可能产生的结果有(101)2 、(000)2 、(1100)2 等等。
请求出对于给定的x,l, r,至少要对x做多少次操作才能使得x ∈ [l, r]成立。 有多组数据。
输入格式
输入的第1行包含1个整数T,表示数据组数。
接下来T行,每行包含3个整数x,l, r,含义见题目描述。
数据范围如下:
• 1 ≤ T ≤ 30000
• 0 ≤ x ≤ 263 − 1
• 0 ≤ l ≤ r ≤ 263 − 1
输出格式
对每组数据,输出1行1个整数,表示答案。
输入样例 复制
2
9 4 6
5 2 7
输出样例 复制
2
0
提示
样例解释:
对于第1组数据,一种可能的操作方案是(9)10 = (1001)2 → (1101)2 → (0101)2 = (5)10 ∈ [4, 6] 。 对于第2组数据,不需要操作就有5 ∈ [2, 7]