結果
問題 |
No.1331 Moving Penguin
|
ユーザー |
👑 |
提出日時 | 2022-04-15 16:40:07 |
言語 | Lua (LuaJit 2.1.1734355927) |
結果 |
AC
|
実行時間 | 489 ms / 1,500 ms |
コード長 | 809 bytes |
コンパイル時間 | 352 ms |
コンパイル使用メモリ | 5,248 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-11-07 15:25:00 |
合計ジャッジ時間 | 15,221 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
local mod = 1000000007 local function badd(x, y) return (x + y) % mod end local n = io.read("*n") local a = {} local t = {} for i = 1, n do a[i] = io.read("*n") t[i] = 0 end local mini = {} local lim = 300 for i = 1, lim do mini[i] = {} for j = 1, i do mini[i][j] = 0 end end t[n] = 1 for j = 1, lim do local pos = (n % j) + 1 mini[j][pos] = 1 end for i = n - 1, 1, -1 do local ai = a[i] local v = 0 if lim < ai then local dst = i + ai while dst <= n do v = badd(v, t[dst]) dst = dst + ai end v = badd(v, t[i + 1]) else local pos = (i % ai) + 1 v = mini[ai][pos] if 1 < ai then v = badd(v, t[i + 1]) end end t[i] = v for j = 1, lim do local pos = (i % j) + 1 mini[j][pos] = badd(mini[j][pos], v) end end print(t[1])