結果
問題 |
No.1097 Remainder Operation
|
ユーザー |
![]() |
提出日時 | 2020-09-05 02:11:36 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 513 ms / 2,000 ms |
コード長 | 717 bytes |
コンパイル時間 | 221 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 27,364 KB |
最終ジャッジ日時 | 2024-11-26 21:58:00 |
合計ジャッジ時間 | 8,650 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
N = int(input()) A = list(map(int, input().split())) Q = int(input()) querie = [int(input()) for i in range(Q)] mod_set = set([0]) seq = [0] now_value = 0 flag = True while flag: V = now_value + A[now_value % N] if not V % N in mod_set: mod_set.add(V % N) seq.append(V) now_value = V continue else: flag = False seq.append(V) L, R = 10**10, 0 modular = seq[-1] % N for i in range(len(seq)): if seq[i] % N == modular: R = i L = min(L, i) D = seq[R] - seq[L] period = R-L def solve(X): if X <= L: return seq[X] else: u, v = divmod(X- L, period) return seq[L+v] + D*u for q in querie: print(solve(q))