您的位置:首页 > 其它

整数转换

2014-10-27 20:59 471 查看

Description

我们可以通过对一个整数A进行加1操作或者乘2操作使其转换为另一个整数B。

给出两个整数X,
Y,计算至少需要多少步才能将X转换为Y。.

Input

输入的第一行包含一个整数T (1
≤ T
≤ 500),表示一共有T组测试数据。

每组测试数据占一行,包含两个整数X,
Y (1
≤ X
≤ Y ≤ 1018)。

Output

对于每组测试数据,输出至少需要多少步才能将X转换为Y。

Sample Input

3
1 1
3 10
2 11

Sample Output

0
3
4

#include<iostream>
#include<cstdio>
using namespace std;

#define MAX(a,b) ((a)>(b) ? (a):(b))
#define MIN(a,b) ((a)<(b) ? (a):(b))

int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		long long x,y,sum=0;
		scanf("%lld %lld",&x,&y);
		if(x==y) {printf("0\n"); continue;}
		while(y/2>=x)
		{
			if(y%2==0) sum+=1;
			else sum+=2;
			y/=2;
		}
		sum+=y-x;
		printf("%lld\n",sum);
	}
	return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: