题目描述:
假设有这样一个计算器,该计算器只有两个按钮,按下第一个按钮能使显示数值减少1,按下第二个按钮能使显示数值乘以2,当前显示数值为N,那么至少要按多少次按钮才能使显示数值变M?
输入:
输入两个整数N和M
输出
输出使按键变为M的最少次数
样例输入
4,5
样例输出
3
#include<iostream>
#include<queue>
using namespace std;
int Number(int &n, int &m)
{
if (n >= m)
return (n - m);
int count=0;
queue<int> result;
result.push(n);
int k = result.front();
while (k!=m)
{
k = result.front();
result.pop();
result.push(k-1);
result.push(k * 2);
count++;
}
return (int)(log(count)/log(2));
}
int main()
{
int N,M;
cin >> N;
cin >> M;
cout<<Number(N, M);
return 0;
}