思路(应该是对的):一直将b除以2直到小于a(当b是单数时-1并找个东西加上),将除2的次数加上此时b与a的差加上b是单数的那个计数器(时间复杂度log)
by ac_goal3 @ 2021-05-05 15:53:55
@[Ted何家乐](/user/342868) http://oiclass.com/conteststatus.php?user_id=ckj2009&cid=1320
密码:ty123456789
by lovely_ckj @ 2021-05-05 15:54:09
原谅我的SB,我刚刚把边界判错了
```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m;
int ans=0,power=1;
int main(){
cin>>n>>m;
while(n*2<=m)n*=2,ans++,power<<=1;
int o=m-n;
while(o){
ans+=o/power;
o%=power;
power>>=1;
}
cout<<ans<<endl;
}
```
by 天南星魔芋 @ 2021-05-05 15:56:48
摸了一个(可能错误的)做法:
```cpp
#include <iostream>
auto main() -> int {
std::ios_base::sync_with_stdio(false);
unsigned a;
unsigned b;
std::cin >> a >> b;
auto result = 0U;
while (b > a) {
if ((b & 1) || (b >> 1) < a)
--b;
else
b >>= 1;
++result;
}
std::cout << result << '\n';
return 0;
}
```
by ud2_ @ 2021-05-05 15:57:01
@[天南星魔芋](/user/399239) @[sjx233_](/user/206953) 你们的做法都是对的!
by lovely_ckj @ 2021-05-05 15:59:03
@[天南星魔芋](/user/399239) 想问一下大佬的代码的思路?awa
by lovely_ckj @ 2021-05-05 16:00:14
@[lovely_ckj](/user/251130)
就是 $×$ 比 $+$ 肯定更快,所以优先用 $×$,$+$ 越前越好(加的越多),所以在保证
$×$ 最大时尽量将其放前面。
by 天南星魔芋 @ 2021-05-05 18:40:14
懂了,谢谢大佬!
by lovely_ckj @ 2021-05-05 19:09:26