2595 X之於Y(思維)

2021-09-28 13:35:23 字數 680 閱讀 4026

noder上課無聊摸魚,他在紙上隨意寫下了兩個數字x和y。現在他想把x通過某種方法變成y,為了把讓這個過程更加有趣,所以他限定自己只能使用兩種操作:

1、把當前x乘二

2、把當前x減一

因為課堂上的時間有限,所以他用了最少的操作次數實現這一過程。下課後,路過的qz看到了noder紙上寫著的x和y,他一秒鐘以內就知道了noder用了多少次操作。那麼問題來了,noder到底用了多少次操作呢?

輸入兩個數字表示x和y

其中1<= x <= 1,000,000,000

1<= y <= 1,000,000,000

輸出乙個數字,表示把x變成y最少需要多少次操作

輸入樣例

1 1000000000

輸出樣例

39又是轉換角度的思維題

考慮把y變成x有兩種操作

1:/2

2:+1

奇數只能+1

偶數,要最少操作,就直接貪心/2,如果小於x了,就再加回來

#includeusing namespace std;

int main()

if(y%2)

y++;

else

y/=2;

ans++;

} cout<;

return 0;

}