NEFU新造了一座摩天大楼,它几乎是无限高的。但是,世界上没有这么高的电梯。为了解决这个问题,陈宇总工程师设计了一种传送门。当你在x层时,它能将你传送到2*x层,传送每次花费1分钟。上下楼梯每层楼也是花费1分钟。现在你在a层,问想去b层至少要几分钟?
Input
第一行一个整数T,表示有T组数据。 接下来T行,每行两个整数a,b,含义如题,(1<=a,b<=100,000)
Output
对于每组数据,输出一个整数,需要的最少时间
Sample Input
1 5 17
Sample Output
4
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
int a[101][101]={0};
int main()
{
int t=0;
for(int i=1;i<=100;i++)
{
for(int j=1;j<i;j++)
a[i][j]=i-j;
for(int j=i+1;j<=100;j++)
{
if(j%2==1)
a[i][j]=a[i][j-1]+1;
else
{
if(a[i][j-1]+1<=a[i][j/2]+1)
a[i][j]=a[i][j-1]+1;
else
a[i][j]=a[i][j/2]+1;
}
}
for(int j=i+1;j<100;j++)
{
if(j%2==1)
{
if(a[i][j+1]+1<a[i][j])
a[i][j]=a[i][j+1]+1;
}
}
}
int n;
int c,b;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>c>>b;
cout<<a[c][b]<<endl;
}
return 0;
}