結果

問題 No.1331 Moving Penguin
ユーザー Example0911
提出日時 2021-01-09 11:11:47
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 912 ms / 1,500 ms
コード長 738 bytes
コンパイル時間 2,167 ms
コンパイル使用メモリ 198,932 KB
最終ジャッジ日時 2025-01-17 15:20:34
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 49
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using P = pair<ll, ll>;
const ll INF = (1LL << 61);
ll mod = (ll)1e9 + 7;
signed main() {
ll N; cin >> N;
vector<ll>A(N); for (int i = 0; i < N; i++)cin >> A[i];
ll sN = sqrt(N);
vector<vector<ll>>sum(sN + 1, vector<ll>(sN + 1));
vector<ll>dp(N);
dp[0] = 1;
for (int i = 0; i < N; i++) {
if (i > 0 && A[i - 1] != 1) {
dp[i] += dp[i - 1]; dp[i] %= mod;
}
for (int j = 1; j <= sN; j++) {
dp[i] += sum[j][i%j]; dp[i] %= mod;
}
if (A[i] < sN) {
sum[A[i]][i % A[i]] += dp[i];
sum[A[i]][i % A[i]] %= mod;
}
else {
for (ll j = i + A[i]; j < N; j += A[i]) {
dp[j] += dp[i];
dp[j] %= mod;
}
}
}
cout << dp[N - 1] << endl;
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0