結果
問題 |
No.1142 XOR と XOR
|
ユーザー |
![]() |
提出日時 | 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()