题目链接: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(); }