#include<bits/stdc++.h>
using namespace std;
long long MOD = 1e9 +7;
int main() {
int n;
cin >> n;
vector<long long> vec(n);
vector<long long> pref(n+1,0);
// pref[0] = 0;
bool all_smaller = true;
for(int k=0;k<n;k++) {
cin >> vec[k];
if(vec[k] > 1000)
all_smaller = false;
pref[k+1] = (pref[k] + vec[k])%MOD;
}
vector<long long> tab(n,0);
long long sum = 0;
long long sum_2 = 0;
if(all_smaller) {
for(int k=0;k<n;k++) {
if(vec[k] % 2 == 0)
tab[k] = sum_2;
else {
tab[k] = (sum - sum_2 + MOD)%MOD;
sum_2 = (sum - sum_2 + MOD ) %MOD;
}
if(pref[k+1] % 2 == 0)
tab[k]++;
tab[k]%=MOD;
sum += tab[k];
sum%=MOD;
sum_2 +=tab[k];
sum_2%=MOD;
//cout << "k = " << k << " " << tab[k] <<endl;
}
cout << tab[n-1];
}
else {
for(int k=0;k<n;k++) {
for(int j=0;j<k;j++) {
if(((pref[k+1]-pref[j+1] + MOD ) % MOD ) %2 ==0)
tab[k] += tab[j];
tab[k] %= MOD;
}
if(pref[k+1] % 2 == 0)
tab[k]++;
tab[k]%=MOD;
//cout << "k = " << k << " " << tab[k] <<endl;
}
cout << tab[n-1];
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | #include<bits/stdc++.h> using namespace std; long long MOD = 1e9 +7; int main() { int n; cin >> n; vector<long long> vec(n); vector<long long> pref(n+1,0); // pref[0] = 0; bool all_smaller = true; for(int k=0;k<n;k++) { cin >> vec[k]; if(vec[k] > 1000) all_smaller = false; pref[k+1] = (pref[k] + vec[k])%MOD; } vector<long long> tab(n,0); long long sum = 0; long long sum_2 = 0; if(all_smaller) { for(int k=0;k<n;k++) { if(vec[k] % 2 == 0) tab[k] = sum_2; else { tab[k] = (sum - sum_2 + MOD)%MOD; sum_2 = (sum - sum_2 + MOD ) %MOD; } if(pref[k+1] % 2 == 0) tab[k]++; tab[k]%=MOD; sum += tab[k]; sum%=MOD; sum_2 +=tab[k]; sum_2%=MOD; //cout << "k = " << k << " " << tab[k] <<endl; } cout << tab[n-1]; } else { for(int k=0;k<n;k++) { for(int j=0;j<k;j++) { if(((pref[k+1]-pref[j+1] + MOD ) % MOD ) %2 ==0) tab[k] += tab[j]; tab[k] %= MOD; } if(pref[k+1] % 2 == 0) tab[k]++; tab[k]%=MOD; //cout << "k = " << k << " " << tab[k] <<endl; } cout << tab[n-1]; } } |
English