#include <bits/stdc++.h> using namespace std; typedef long long ll; constexpr ll mod=1'000'000'007LL; bool good_num(ll num){ if(num%mod%2) return false; return true; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vector<ll> input(n); for(auto &i : input){ cin>>i; } vector<ll> pref_sums(n+1); vector<ll> pref_ans(n+1); for(int i=1;i<=n;++i){ pref_sums[i] = pref_sums[i-1]+input[i-1]; } pref_ans[0]=1; for(int i=1;i<=n;++i){ if(!pref_ans[i-1]) continue; for(int j=i;j<=n;++j){ if(good_num(pref_sums[j]-pref_sums[i-1])){ pref_ans[j]+=pref_ans[i-1]; pref_ans[j]%=mod; } } } cout<<pref_ans[n]; return 0; }
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 | #include <bits/stdc++.h> using namespace std; typedef long long ll; constexpr ll mod=1'000'000'007LL; bool good_num(ll num){ if(num%mod%2) return false; return true; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vector<ll> input(n); for(auto &i : input){ cin>>i; } vector<ll> pref_sums(n+1); vector<ll> pref_ans(n+1); for(int i=1;i<=n;++i){ pref_sums[i] = pref_sums[i-1]+input[i-1]; } pref_ans[0]=1; for(int i=1;i<=n;++i){ if(!pref_ans[i-1]) continue; for(int j=i;j<=n;++j){ if(good_num(pref_sums[j]-pref_sums[i-1])){ pref_ans[j]+=pref_ans[i-1]; pref_ans[j]%=mod; } } } cout<<pref_ans[n]; return 0; } |