Problem4767--哆啦A梦的时光机

4767: 哆啦A梦的时光机

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 256 MiB

Description

哆啦A梦有一个神奇的道具:时光机。坐着它,大雄和他的伙伴们能穿越时空,回到过去或者去到未来。
有一天,大雄和他的伙伴们想穿越时空进行探险,可是时光机却出了一点故障,只能进行有限的时空穿越操作。大雄他们需要从现在出发,到达一个目标时间点进行探险,结束后再返回到现在,他们希望尽可能减少时光机的操作次数,你能帮助他们吗?
假设大雄和他的伙伴们出发的时间点(现在)为 S (0<S<1,000,000)S (0 < S < 1,000,000)(0<S<1,000,000),希望到达的时间点(目标)为 T (0<T<1,000,000)T (0 < T < 1,000,000)(0<T<1,000,000),已知时光机可以进行如下的时空穿越操作(XXX 为正整数):
可以从任意时刻X穿越到 X+1X+1X+1 或者 X−1X-1X1 时刻
可以从任意时刻X穿越到 X×2X \times 2X×2 时刻
XXX 为偶数时,可以从 XXX 时刻穿越到 X/2X/2X/2 时刻
请问,大雄和他的伙伴们从 SSS 时刻出发,先到达 TTT 时刻,再回到 SSS 时刻最少需要多少次时空穿越操作?

Input

输入的第一个数是一个正整数 $N\ (0 < N < 200)$,表示测试数据一共有 $N$组。
之后有 $N$ 行,每一行包含两个正整数 $S,\ T\ (S \neq T)$,表示出发和到达时间点。

Output

输出包括 $N$ 行,每一行一个正整数,表示每组测试数据对应的最少时光机操作次数。

Sample 1 Input

2
5 17
4 8

Sample 1 Output

8
2
对于 S=5S=5S=5T=17T=17T=17
操作如下:5->4->8->16->17->16->8->4->5
对于 S=4S=4S=4T=8T=8T=8:操作如下:4->8->4。

Source/Category

基础算法 4.100.BFS