#include <bits/stdc++.h>
using namespace std;
#define dbg(x) x
#define prt(x) dbg(cerr << x)
#define pv(x) dbg(cerr << #x << " = " << x << '\n')
#define parr(x) dbg(cerr << #x << " = "; for (auto y : x) {cerr << y << ' ';} cerr << '\n';)
#define parr2d(x) dbg(cerr << #x << " = \n"; for (auto _ : x) {parr(_);} cerr << '\n';)
/*
*/
const long long mod = 1e9 + 7;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int n;
cin >> n;
vector<int> d(n), x(n);
for (int i = 0; i < n; i++) {
cin >> d[i] >> x[i];
}
int s = sqrt(n);
vector<vector<long long>> md(s + 1);
for (int i = 1; i <= s; i++) {
md[i].resize(i, 0);
}
vector<long long> dp(n, 0);
for (int i = n - 1; i >= 0; i--) {
dp[i] = 1;
if (d[i] > s) {
for (int j = i + d[i]; j < n; j += d[i]) {
dp[i] += dp[j]; dp[i] %= mod;
}
} else if (d[i] > 0) {
dp[i] += md[d[i]][i % d[i]]; dp[i] %= mod;
}
for (int j = 1; j <= s; j++) {
md[j][i % j] += dp[i]; md[j][i % j] %= mod;
}
}
cout << dp[0] << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |