题目:
增长与翻倍
内存限制: 256 Mb时间限制: 1000 ms
题目描述
给定正整数 ss 和 tt,我们希望利用增长与翻倍的操作,让 ss 变成 tt。一步增长可以让数字加一,一步翻倍可以让数字翻倍。最少需要用多少步操作才能将 ss 变成 tt?,保证 s<ts<t。
输入格式
两个整数,分别表示 ss 与 tt。
输出格式
单个整数:表示最少操作步数。
数据范围
对于 50\%50% 的数据,1\leq s< t\leq 1001≤s<t≤100;
对于 100\%100% 的数据,1\leq s< t\leq 1,000,000,0001≤s<t≤1,000,000,000;
题解:
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c=0;
cin>>a>>b;
while(b/2>=a){
if(b%2)c+=2;else c++;
b/=2;
}
cout<<c+b-a;
return 0;
}