結果
| 問題 |
No.1142 XOR と XOR
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-31 17:24:03 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,006 bytes |
| コンパイル時間 | 259 ms |
| コンパイル使用メモリ | 82,280 KB |
| 実行使用メモリ | 155,284 KB |
| 最終ジャッジ日時 | 2025-03-31 17:24:35 |
| 合計ジャッジ時間 | 5,995 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 1 TLE * 1 -- * 23 |
ソースコード
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