結果
問題 | No.1142 XOR と XOR |
ユーザー |
![]() |
提出日時 | 2020-07-31 22:04:55 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 37 ms / 2,000 ms |
コード長 | 2,061 bytes |
コンパイル時間 | 1,847 ms |
コンパイル使用メモリ | 169,508 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-08 03:26:13 |
合計ジャッジ時間 | 3,435 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define pb push_back#define fi first#define se secondtypedef pair<ll, ll> P;using VP = vector<P>;using VVP = vector<VP>;using VI = vector<ll>;using VVI = vector<VI>;using VVVI = vector<VVI>;const int inf = 1e9 + 7;const ll INF = 1LL << 61;const ll mod = 1e9 + 7;template <class T> inline bool chmax(T &a, T b) {if (a < b) {a = b;return true;}return false;}template <class T> inline bool chmin(T &a, T b) {if (a > b) {a = b;return true;}return false;}int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int i, j;int n, n2, k;cin >> n >> n2 >> k;int a[n], b[n2];for (i = 0; i < n; i++) cin >> a[i];for (i = 0; i < n2; i++) cin >> b[i];int m = 1024;VI cnta(m, 0), cntb(m, 0);int p = 0;cnta[p]++;for (i = 0; i < n; i++) {p ^= a[i];cnta[p]++;}p = 0;cntb[p]++;for (i = 0; i < n2; i++) {p ^= b[i];cntb[p]++;}VI va(m, 0), vb(m, 0);for (i = 0; i < m; i++) {// if (cnta[i] > 0) cout << i << " " << cnta[i] << endl;for (j = i; j < m; j++) {if (i == j) {va[i ^ j] += cnta[i] * (cnta[i] - 1) / 2;va[i ^ j] %= mod;}else {va[i ^ j] += cnta[i] * cnta[j];va[i ^ j] %= mod;}}}for (i = 0; i < m; i++) {// if (va[i] > 0) cout << i << " " << va[i] << endl;}for (i = 0; i < m; i++) {for (j = i; j < m; j++) {if (i == j) {vb[i ^ j] += cntb[i] * (cntb[i] - 1) / 2;vb[i ^ j] %= mod;}else {vb[i ^ j] += cntb[i] * cntb[j];vb[i ^ j] %= mod;}}}ll ans = 0;for (i = 0; i < m; i++) {ans += va[i] * vb[k ^ i];ans %= mod;}cout << ans << endl;}