• Codeforces Round #647 (Div. 2) A. Johnny and Ancient Computer


    题目链接:https://codeforces.com/contest/1362/problem/A

    题意

    有一个正整数 $a$,可选择的操作如下:

    • $a imes 2$
    • $a imes 4$
    • $a imes 8$
    • $a / 2$,如果 $2$ 整除 $a$
    • $a / 4$,如果 $4$ 整除 $a$
    • $a / 8$,如果 $8$ 整除 $a$

    问能否由 $a$ 得到正整数 $b$,以及最少的操作次数。

    题解

    贪心模拟即可。

    代码

    #include <bits/stdc++.h>
    using ll = long long;
    using namespace std;
    
    void solve() {
        ll a, b; cin >> a >> b;
        if (a > b) swap(a, b);
        if (b % a != 0)
            cout << -1 << "
    ";
        else {
            ll c = b / a;
            int ans = 0;
            for (auto i : {8, 4, 2})
                while (c % i == 0) c /= i, ++ans;
            cout << (c == 1 ? ans : -1) << "
    ";
        }
    }
    
    int main() {
        int t; cin >> t;
        while (t--) solve();
    }
  • 相关阅读:
    券商
    养生之道
    房产买卖
    货币常识
    虚拟币
    其他开源项目
    Shiro
    文件上传插件
    JAVA常见问题
    如何写好PPT
  • 原文地址:https://www.cnblogs.com/Kanoon/p/13052778.html
Copyright © 2020-2023  润新知