ICPC Pacific Northwest Regional Contest 2019

 D.Dividing by Two 

题意:给定两个数a,b,通过最少的操作使a,b相等,

可以执行的操作只有a=a/2(a为偶数)和a=a+1

思路:当a<=b时,可以进行的操作只有a=a+1;

当a>b时,尽可能多的使a=a/2,当a<b时再a=a+1;

AC代码:

#include<iostream>
using namespace std;
int main(){
    int a,b,i;
    cin>>a>>b;
    if(a<=b){
        cout<<b-a<<endl;
    }
    else{
        int sum=0;
        while(a!=b){
            if(a<b){
                a=a+1;
                sum++;
            }
            else if(a>b){
                if(a%2==0){
                    a=a/2;
                    sum++;
                }
                else{
                    a=a+1;
                	sum++;
                }
            }
        }
        cout<<sum<<endl;
    }
}
原文地址:https://www.cnblogs.com/nanan/p/12838975.html