提出 #70099116
ソースコード 拡げる
#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;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - Mod of XOR |
| ユーザ | rniya |
| 言語 | C++ 23 (gcc 12.2) |
| 得点 | 700 |
| コード長 | 1875 Byte |
| 結果 | AC |
| 実行時間 | 67 ms |
| メモリ | 3540 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 700 / 700 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 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 |