C

 avatar
unknown
c_cpp
4 months ago
832 B
70
Indexable
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
#define int long long
const int N = 1e6 + 10;
const int inf = 1e15;
const int mod = 998244353;

inline void solve(){
    
    // m * n = s * k 

    int s, m;
    cin >> s >> m;

    if(s % (m & -m)){
        cout << -1;
        return;
    }

    bool ok = 1;
    int ans = 0;

    for(int bit = 0;bit < 64;bit += 1){
        int cur = (1ll << (bit)) - 1;

        
        int ss = (s & cur);
        int mm = (m & cur);

        if(ss == 0) continue;

        ans = max(ans, (ss + mm - 1)/mm);
    }

    cout << ans;

}

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int t = 1;
    cin >> t;
    while(t--){
        solve();
        cout << '\n';
    }
    return 0;
}
Editor is loading...
Leave a Comment