結果
問題 | No.97 最大の値を求めるくえり |
ユーザー |
![]() |
提出日時 | 2025-03-31 17:39:30 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 1,516 bytes |
コンパイル時間 | 161 ms |
コンパイル使用メモリ | 82,764 KB |
実行使用メモリ | 88,784 KB |
最終ジャッジ日時 | 2025-03-31 17:40:32 |
合計ジャッジ時間 | 10,974 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 TLE * 1 -- * 14 |
ソースコード
def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 Q = int(input[ptr]) ptr += 1 m = 100003 # Initialize XOR128 variables global xor128_x, xor128_y, xor128_z, xor128_w xor128_x = 123456789 xor128_y = 362436069 xor128_z = 521288629 xor128_w = 88675123 # Generate A A = [0] * N for i in range(N): t = xor128_x ^ ((xor128_x << 11) & 0xFFFFFFFF) t &= 0xFFFFFFFF # Update xor128_x, y, z, w old_x, old_y, old_z, old_w = xor128_x, xor128_y, xor128_z, xor128_w xor128_x = old_y xor128_y = old_z xor128_z = old_w # Compute t ^ (t >> 8) t_part = t ^ (t >> 8) t_part &= 0xFFFFFFFF # Compute new_w new_w = old_w ^ ((old_w >> 19) & 0xFFFFFFFF) ^ t_part new_w &= 0xFFFFFFFF xor128_w = new_w # Assign A[i] A[i] = xor128_w % m # Create presence array cnt = [False] * m for x in A: cnt[x] = True # Process queries for _ in range(Q): q = int(input[ptr]) ptr += 1 if q == 0: print(0) continue # Compute inverse of q modulo m inv_q = pow(q, m-2, m) found = -1 # Check from m-1 down to 0 for r in range(m-1, -1, -1): a = (r * inv_q) % m if cnt[a]: found = r break print(found) if __name__ == '__main__': main()