結果
問題 |
No.1097 Remainder Operation
|
ユーザー |
|
提出日時 | 2022-07-22 00:12:54 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 161 ms / 2,000 ms |
コード長 | 602 bytes |
コンパイル時間 | 192 ms |
コンパイル使用メモリ | 82,428 KB |
実行使用メモリ | 98,724 KB |
最終ジャッジ日時 | 2024-07-03 10:03:49 |
合計ジャッジ時間 | 5,896 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
N = int(input()) lsA = list(map(int,input().split())) Q = int(input()) lsQ = [int(input()) for i in range(Q)] r = 0 x = 0 used = set() ll = [0] while not(r in used): used.add(r) x += lsA[r] ll.append(x) r = (x)%N st = 0 for i in range(len(ll)): if ll[i] % N == r: st = i break rooppoint = ll[-1]-ll[st] rooplen = len(ll)-1-st for i in range(Q): q = lsQ[i] if q <= st: print(ll[q]) continue else: p = q-st roopn = p//rooplen roopadd = p%rooplen print(ll[st]+roopn*rooppoint+(ll[st+roopadd]-ll[st]))