Submission #70099116


Source Code Expand

#include <bits/stdc++.h>
#ifdef LOCAL
#include <debug.hpp>
#else
#define debug(...) void(0)
#endif

template <class T, class U = T> bool chmin(T& x, U&& y) { return y < x and (x = std::forward<U>(y), true); }

template <class T, class U = T> bool chmax(T& x, U&& y) { return x < y and (x = std::forward<U>(y), true); }

template <class T> void mkuni(std::vector<T>& v) {
    std::ranges::sort(v);
    auto result = std::ranges::unique(v);
    v.erase(result.begin(), result.end());
}

template <class T> int lwb(const std::vector<T>& v, const T& x) {
    return std::distance(v.begin(), std::ranges::lower_bound(v, x));
}

using namespace std;

using ll = long long;

constexpr int MAX_LOG = 30;

void solve() {
    int C, X;
    cin >> C >> X;

    auto check = [&](int n) {
        if (n == 0) {
            return false;
        }
        return (n ^ C) % n == X;
    };
    {
        int n = X ^ C;
        if (check(n)) {
            cout << n << "\n";
            return;
        }
    }
    {
        int cur = 0, n = 1 << MAX_LOG;
        for (int i = MAX_LOG - 1, f = 1; i >= 0; i--) {
            if (C >> i & 1) {
                if (f) {
                    cur += 1 << i;
                    f = 0;
                } else {
                    if (cur < X) {
                        cur += 1 << i;
                    } else {
                        cur -= 1 << i;
                        n |= 1 << i;
                    }
                }
            }
        }
        if (check(n)) {
            cout << n << "\n";
        } else {
            cout << -1 << "\n";
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout << fixed << setprecision(15);

    int t;
    cin >> t;
    for (; t--;) {
        solve();
    }
    return 0;
}

Submission Info

Submission Time
Task C - Mod of XOR
User rniya
Language C++ 23 (gcc 12.2)
Score 700
Code Size 1875 Byte
Status AC
Exec Time 67 ms
Memory 3540 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 1
AC × 22
Set Name Test Cases
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3392 KiB
01_handmade_00.txt AC 46 ms 3456 KiB
01_handmade_01.txt AC 37 ms 3444 KiB
01_handmade_02.txt AC 32 ms 3472 KiB
01_handmade_03.txt AC 31 ms 3344 KiB
01_handmade_04.txt AC 60 ms 3480 KiB
01_handmade_05.txt AC 41 ms 3416 KiB
02_random_00.txt AC 49 ms 3476 KiB
02_random_01.txt AC 48 ms 3420 KiB
02_random_02.txt AC 44 ms 3540 KiB
02_random_03.txt AC 43 ms 3420 KiB
02_random_04.txt AC 43 ms 3480 KiB
02_random_05.txt AC 58 ms 3480 KiB
02_random_06.txt AC 57 ms 3424 KiB
02_random_07.txt AC 58 ms 3480 KiB
02_random_08.txt AC 36 ms 3480 KiB
02_random_09.txt AC 36 ms 3456 KiB
02_random_10.txt AC 36 ms 3492 KiB
02_random_11.txt AC 67 ms 3468 KiB
02_random_12.txt AC 67 ms 3452 KiB
02_random_13.txt AC 66 ms 3412 KiB
02_random_14.txt AC 36 ms 3472 KiB