結果
問題 | No.1097 Remainder Operation |
ユーザー |
|
提出日時 | 2024-10-14 14:12:03 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 375 ms / 2,000 ms |
コード長 | 791 bytes |
コンパイル時間 | 754 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 111,872 KB |
最終ジャッジ日時 | 2024-10-14 14:12:12 |
合計ジャッジ時間 | 8,016 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 21 |
ソースコード
from ast import NameN = int(input())A = list(map(int,input().split()))B = [0]setB = {0}cur = 0while True:ncur = (cur+A[cur%N])%Nif ncur in setB:breaksetB.add(ncur)B.append(ncur)cur = ncurind = B.index(ncur)B0 = B[:ind]B1 = B[ind:]S = len(B0)if S>0:cumA0 = [0]*ScumA0[0] = A[B0[0]]for i in range(1,S):cumA0[i] = cumA0[i-1]+A[B0[i]]T = len(B1)cumA1 = [0]*TcumA1[0] = A[B1[0]]for i in range(1,T):cumA1[i] = cumA1[i-1]+A[B1[i]]Q = int(input())for _ in range(Q):K = int(input())ans = 0if K<=S:ans = cumA0[K-1]else:if S>0:ans = cumA0[S-1]K -= Sq = K//Tr = K%Tans += q*cumA1[T-1]if r>0:ans += cumA1[r-1]print(ans)