D:金蛇狂舞
这题我被坑了呜呜呜无语了,看到题面,很明显的dfs爆搜或者打表过,因为x,y只有1到7。step也直到7 但是!!!有一个sqrt+取整算1步!!!我以为算两步呢,导致我交了6次没过最后排名只有惨淡200名。。最后一题我也调崩了
思路:dfs爆搜枚举每一种情况即可
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int t;
int ans = 10;
bool flag;
ll jc[25];
void dfs(ll x,int y,int step)
{
if(step>7)
return;
if(x==y)
{
flag = true;
ans = min(step,ans);
return;
}
dfs(ceil(sqrt(x)),y,step+1);;
dfs(floor(sqrt(x)),y,step+1);
if(x<=13)
dfs(jc[x],y,step+1);
}
int main()
{
cin>>t;
ll sum = 1;
for(int i = 1;i<=13;++i)
{
sum*=i;
jc[i] = sum;
}
while(t--)
{
flag = false;
ans = 10;
int x,y;
cin>>x>>y;
if(x==y){
cout<<0<<endl;
continue;
}
dfs(x,y,0);
if(!flag) cout<<-1<<endl;
else cout<<ans<<endl;
}
return 0;
}