QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100

#841. 树状数组

统计

这个世界里的居民都生活在一个有无穷多个房子的城市里,每个人生活的地方都有唯一的一个编号 $n$ 是一个正整数,这个城市的街道之间可以被这么构造:对于一个房子 $n$,这个房子连到编号大于它自己的房子的街道只有一条,是联向 $n + \mathrm{lowbit}(n)$ 的。

$\mathrm{lowbit}(n)$ 函数的定义是:$n$ 的二进制分解中只保留最低的有值位。有一种非常方便的位运算方法来计算出来,即 lowbit(n) = n & -n

可以证明,任意两个房子都是可以通过这些双向道路互相到达的,你的任务是处理若干组询问,计算出两个房子之间的最短路径,每经过一条边则记一单位长度。

输入格式

第一行一个整数 $q$,表示询问的组数。

接下来 $q$ 行,每行两个正整数 $x\ y$ 表示询问的两个房子。

输出格式

输出 $q$ 行,每行一个整数表示最短路径的长度。

样例数据

样例 1 输入

2
1 3
2 4

样例 1 输出

3
1

子任务

对于 $20\%$ 的数据,保证 $1 \leq q \leq 10$, $1 \le x,y \le 2^{3}$

对于 $30\%$ 的数据,保证 $1 \leq q \leq 500$, $1 \le x,y \le 2^{9}$

对于 $70\%$ 的数据,保证 $1 \leq q \leq 10^5$, $1 \le x,y \le 2^{20}$

对于 $100\%$ 的数据,保证 $1 \le q \le 3 \times 10^5$, $1 \le x, y \le 2^{60}$