結果
問題 | No.1210 XOR Grid |
ユーザー | milanis48663220 |
提出日時 | 2020-08-30 20:25:59 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 68 ms / 2,000 ms |
コード長 | 891 bytes |
コンパイル時間 | 874 ms |
コンパイル使用メモリ | 82,656 KB |
実行使用メモリ | 6,784 KB |
最終ジャッジ日時 | 2024-11-15 15:15:39 |
合計ジャッジ時間 | 3,836 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 57 |
ソースコード
#include <iostream> #include <algorithm> #include <iomanip> #include <vector> #include <queue> #include <set> #include <map> using namespace std; typedef long long ll; const ll MOD = 1000000007; template <typename T> T pow(T a, ll n) { T ans = 1; T tmp = a; for (int i = 0; i <= 60; i++) { ll m = (ll)1 << i; if (m & n) { ans *= tmp; ans %= MOD; } tmp *= tmp; tmp %= MOD; } return ans; } ll N, M, X; ll A[200000], B[200000]; int main(){ ios::sync_with_stdio(false); cin.tie(0); cout << setprecision(10) << fixed; cin >> N >> M >> X; ll axor = 0, bxor = 0; for(int i = 0; i < N; i++){ cin >> A[i]; axor ^= A[i]; } for(int i = 0; i < M; i++){ cin >> B[i]; bxor ^= B[i]; } if(axor == bxor){ cout << pow<ll>(((ll)1<<X)%MOD, (N-1)*(M-1)) << endl; }else{ cout << 0 << endl; } }