結果
| 問題 | No.1142 XOR と XOR |
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:24:03 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,006 bytes |
| 記録 | |
| コンパイル時間 | 224 ms |
| コンパイル使用メモリ | 96,104 KB |
| 実行使用メモリ | 163,508 KB |
| 最終ジャッジ日時 | 2026-07-08 04:07:27 |
| 合計ジャッジ時間 | 29,493 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 19 TLE * 6 |
ソースコード
def compute_counts(arr):
counts = [0] * 1024
current_prefix = 0
freq = [0] * 1024
freq[0] = 1 # Initially, prefix XOR is 0 with count 1
for num in arr:
current_prefix ^= num
for prev_x in range(1024):
if freq[prev_x]:
x = current_prefix ^ prev_x
counts[x] += freq[prev_x]
freq[current_prefix] += 1
return counts
def main():
MOD = 10**9 + 7
import sys
input = sys.stdin.read().split()
idx = 0
N = int(input[idx]); idx +=1
M = int(input[idx]); idx +=1
K = int(input[idx]); idx +=1
a = list(map(int, input[idx:idx+N]))
idx += N
b = list(map(int, input[idx:idx+M]))
a_counts = compute_counts(a)
b_counts = compute_counts(b)
result = 0
for x in range(1024):
y = x ^ K
result += a_counts[x] * b_counts[y]
if result >= MOD:
result %= MOD
result %= MOD
print(result)
if __name__ == '__main__':
main()
lam6er