LZY的計算器(暴力)

題目描述
LZY平時非常懶,他經常要計算一些數字,他爲了偷懶於是去商店購買了一臺計算器。老闆WLJ欺負他個子小不能打,於是賣了一臺殘次品給他。這臺殘次品計算器只能進行兩個操作:

雙倍(Double):將顯示屏上的數字乘 2;
遞減(Decrement):將顯示屏上的數字減 1 。

最初,計算器顯示數字 A。

現在請你幫幫LZY,返回顯示數字 B 所需的最小操作數。
輸入
樣例輸入由多組測試數據組成。
每組測試數據第一行輸入兩個正整數A ( 1 <= A <= 10^9 ) 和 B ( 1 <= B <= 10^9 )
輸出
輸出由A變成B的最小操作次數
樣例輸入 Copy
2 3
5 8
3 10
1024 1
樣例輸出 Copy
2
2
3
1023
解題思路
如果A>=B,則直接輸出A-B,如果A<B,只要B>A就循環跑,B如果是偶數就除2.如果是奇數就加1,一直到A<=B爲止,然後輸出循環的次數sum+=A-B;

#include<bits/stdc++.h>
using namespace std;
int main(){
    long long n,m,sum;
    while(~scanf("%lld%lld",&n,&m)){
        if(m<n){
            printf("%lld\n",n-m);
        }
        else{
            sum=0;
            while(m!=n){
                if(m<n){
                    sum+=n-m;
                    m=n;
                    break;
                }
                if(m%2!=0){
                    m++;
                } 
                else{
                    m/=2;
                } 
                sum++;
            } 
            printf("%lld\n",sum);
        }
    }
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章