题目描述
给定正整数$s$和$t$,我们希望利用增长与翻倍的操作,让$s$变成$t$。一步增长可以让数字加一,一步翻倍可以让数字翻倍。最少需要用多少步操作才能将$s$变成$t$?,保证$s<t$。
输入描述
两个整数,分别表示$s$与$t$。
数据范围
- 对于$50%$的数据,$1≤s<t≤100$;
- 对于$100%$的数据,$1≤s<t≤1,000,000,000$;
输出描述
单个整数:表示最少操作步数。
输入样例
1 4
输出样例
2
#include<bits/stdc++.h>
using namespace std;
int main(){
int s,t,ans=0;
cin>>s>>t;
while (s<t)
{
if (t%2==1) t--;
else if (t/2>=s) t/=2;
else break;
ans++;
}
ans+=t-s;
cout<<ans;
return 0;
}