#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector <long long> sp(n+1);
vector <long long> ans(n+1, 0);
long long suma_parzystych = 0, suma_nieparzystych = 0;
int mod = 1'000'000'007;
sp[0] = 0;
ans[0] = 1;
for(int i = 1, x; i<=n; ++i){
cin >> x;
sp[i] = sp[i-1]+x;
}
for(int i = 1; i<=n; ++i){
if((sp[i]-sp[i-1])%2 == 0) ans[i] = (ans[i]+ans[i-1])%mod;
for(int j = i-1; j>0; --j){
if(((sp[i]-sp[j-1])%mod)%2 == 0) ans[i] = (ans[i]+ans[j-1])%mod;
}
}
cout << ans[n] << "\n";
}
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 | #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector <long long> sp(n+1); vector <long long> ans(n+1, 0); long long suma_parzystych = 0, suma_nieparzystych = 0; int mod = 1'000'000'007; sp[0] = 0; ans[0] = 1; for(int i = 1, x; i<=n; ++i){ cin >> x; sp[i] = sp[i-1]+x; } for(int i = 1; i<=n; ++i){ if((sp[i]-sp[i-1])%2 == 0) ans[i] = (ans[i]+ans[i-1])%mod; for(int j = i-1; j>0; --j){ if(((sp[i]-sp[j-1])%mod)%2 == 0) ans[i] = (ans[i]+ans[j-1])%mod; } } cout << ans[n] << "\n"; } |
English