无
2026-07-23 15:22:31
发布于:广东
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100010;
int n,k;
int vis[MAXN];
void bfs(){
memset(vis,-1,sizeof(vis));
queue<int> q;
q.push(n);
vis[n]=0;
while(!q.empty()){
int u=q.front();q.pop();
if(u==k){
cout<<vis[u]<<endl;
return;
}
if(u-1>=0&&vis[u-1]==-1){
vis[u-1]=vis[u]+1;
q.push(u-1);
}
if(u+1<MAXN&&vis[u+1]==-1){
vis[u+1]=vis[u]+1;
q.push(u+1);
}
if(u<k&&vis[2*u]==-1){
vis[2*u]=vis[u]+1;
q.push(2*u);
}
}
}
int main(){
cin>>n>>k;
if(n>=k) cout<<n-k<<endl;
else bfs();
return 0;
}
这里空空如也

















有帮助,赞一个