結果
| 問題 |
No.1331 Moving Penguin
|
| コンテスト | |
| ユーザー |
Kiri8128
|
| 提出日時 | 2021-01-08 22:10:06 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 976 ms / 1,500 ms |
| コード長 | 600 bytes |
| コンパイル時間 | 465 ms |
| コンパイル使用メモリ | 82,432 KB |
| 実行使用メモリ | 85,888 KB |
| 最終ジャッジ日時 | 2024-11-07 14:45:52 |
| 合計ジャッジ時間 | 38,065 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 49 |
ソースコード
P = 10 ** 9 + 7
N = int(input())
A = [int(a) for a in input().split()]
X = [0] * N
X[0] = 1
K = 400
Y = [[0] * a for a in range(K)]
for i, a in enumerate(A):
s = X[i] + X[i-1]
if s >= P: s -= P
for j in range(1, K):
s += Y[j][i%j]
if s >= P: s -= P
X[i] = s
if a < K:
ia = i % a
Y[a][ia] += s
if Y[a][ia] >= P: Y[a][ia] -= P
if a == 1 and i < N - 1:
X[i+1] -= s
if X[i+1] < 0: X[i+1] += P
else:
for j in range(i + a, N, a):
X[j] += s
if X[j] >= P: X[j] -= P
print(X[-1])
Kiri8128