結果
問題 |
No.1331 Moving Penguin
|
ユーザー |
|
提出日時 | 2022-03-19 09:19:31 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
TLE
|
実行時間 | - |
コード長 | 540 bytes |
コンパイル時間 | 196 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 47,152 KB |
最終ジャッジ日時 | 2024-10-04 02:02:18 |
合計ジャッジ時間 | 7,354 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 10 TLE * 39 |
ソースコード
from math import isqrt import numpy as np N = int(input()) A = map(int, input().split()) sq = isqrt(N) MOD = 10 ** 9 + 7 dp = np.zeros(N, dtype=np.int64) dp[0] = 1 small_a = np.zeros((sq, sq), dtype=np.int64) ar = np.arange(1, sq, dtype=int) for i, a in enumerate(A): dp[i] += np.sum(small_a[ar, i % ar]) dp[i] %= MOD dpi = dp[i] if i + 1 < N and a != 1: dp[i + 1] += dpi if sq <= a: dp[i + a::a] += dpi else: small_a[a, i % a] += dpi small_a[a, i % a] %= MOD print(dp[-1] % MOD)