求助一道站外题

学术版

思路(应该是对的):一直将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


上一页 |