G: LZY的计算器

Description
LZY平时非常懒,他经常要计算一些数字,他为了偷懒于是去商店购买了一台计算器。老板WLJ欺负他个子小不能打,于是卖了一台残次品给他。这台残次品计算器只能进行两个操作:
双倍(Double):将显示屏上的数字乘 2;
递减(Decrement):将显示屏上的数字减 1 。
最初,计算器显示数字 A。
现在请你帮帮LZY,返回显示数字 B 所需的最小操作数。
Input
样例输入由多组测试数据组成。
每组测试数据第一行输入两个正整数A ( 1 <= A <= 10^9 ) 和 B ( 1 <= B <= 10^9 )
utput
输出由A变成B的最小操作次数
Sample Input
2 3
5 8
3 10
1024 1
Sample Output
2
2
3
1023
思路
在最外面一个大while里面一个判断a>=b是的话a-b后输出结束本次循环,a<b的话再一个while循环条件(b>a)//因为我是不动a,让b进行变化b/2或者b+1,奇数+1,偶数/2,进行一次记录一次最后在不满足第二个while后将记录的总次数+变化后的a-b输出结束次数。
代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long a,b,cout;
    while(~scanf("%ld %ld",&a,&b)){
        cout=0;
        if(a>=b){
            cout=a-b;
            printf("%d\n",cout);
            continue;
        }
        while(b>a){
            if(b%2==0){
                b/=2;
            }
            else{
                b++;
            }
            cout++;
        }
        cout+=(a-b);
        printf("%d\n",cout);
    }
    return 0;
} 
发布了17 篇原创文章 · 获赞 1 · 访问量 364

猜你喜欢

转载自blog.csdn.net/weixin_46396354/article/details/104521094
G
今日推荐