結果
問題 | No.1097 Remainder Operation |
ユーザー |
![]() |
提出日時 | 2020-06-26 22:05:42 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 436 ms / 2,000 ms |
コード長 | 712 bytes |
コンパイル時間 | 138 ms |
コンパイル使用メモリ | 82,256 KB |
実行使用メモリ | 170,316 KB |
最終ジャッジ日時 | 2024-07-04 21:16:02 |
合計ジャッジ時間 | 6,265 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
# coding: utf-8 # Your code here! import sys read = sys.stdin.read readline = sys.stdin.readline n, = map(int,readline().split()) *a, = map(int,readline().split()) dist = [a[:]] nxt = [[(i+a[i])%n for i in range(n)]] #print(nxt) #print(dist) for _ in range(40): res = [dist[-1][nxt[-1][i]] + dist[-1][i] for i in range(n)] dist.append(res) res = [nxt[-1][nxt[-1][i]] for i in range(n)] nxt.append(res) #print(nxt[:2]) #print(dist[:2]) q,*k = map(int,read().split()) for ki in k: d = 0 x = 0 i = 0 for m in range(40,-1,-1): if i + (1<<m) <= ki: d += dist[m][x] x = nxt[m][x] i += 1<<m print(d)