#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1000005;
const int mod = 1e9 + 7;
int n, m, p[N], pw[N], ans[N], a[N];
int32_t main(){
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> m;
for(int i = 1; i <= m; ++i) cin >> a[i];
p[1] = 0;
for(int i = 2; i <= m; ++i){
int j = p[i - 1];
while(j >= 1 && a[j + 1] != a[i]) j = p[j - 1];
if (a[j + 1] == a[i]){
p[i] = j + 1;
}
}
pw[0] = 1;
for(int i = 1; i <= m; ++i) pw[i] = pw[i - 1] * n % mod;
for(int i = 1; i <= m; ++i){
ans[i] = (ans[p[i]] + pw[i]) % mod;
cout << ans[i] << '\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... |
# | 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... |