假设有这样一个计算器,该计算器只有两个按钮,按下第一个按钮能使显示数值减少1,按下第二个按钮能使显示数值乘以2,当前显示数值为N, 那么至少要按多少次按钮才能显示数值编程M?
输入:输入两个整数N和M,1≤N,M≤109。
输出:是显示数值变成M的最少按钮次数。
样例输入:
4 5
样例输出:
3
#include <iostream>
using namespace std;
int calculation(int N, int M)
{
int count = 0;
if (N >= M)
return N - M;
else
{
while (N < M)
{
if (M % 2 == 0)
{
++count;
M /= 2;
}
else
{
count += 2;
M = (M + 1) / 2;
}
}
count = N - M + count;
}
return count;
}
int main()
{
int count = 0;
count = calculation(4, 5);
cout << count;
return 0;
}