#include <iostream> #include <vector> #include <string> #include <sstream> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; const int P = 1000000007; bool modupalo(long long i){ return i % P % 2 == 0; } int main(){ int n; cin >> n; vector<long long> nums(n); vector<long long> sum_to_n(n); for(int i= 0; i<n; i++) cin >> nums[i]; for(int i = 0; i < n; i++){ long long currentSum = 0; long long currentCount = 0; for(int j = i; j >= 0; j--){ currentSum += nums[j]; if(modupalo(currentSum)){ currentCount += j == 0 ? 1L : sum_to_n[j - 1]; } } sum_to_n[i] = currentCount % P; } cout << sum_to_n[n-1] << endl; }
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 | #include <iostream> #include <vector> #include <string> #include <sstream> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; const int P = 1000000007; bool modupalo(long long i){ return i % P % 2 == 0; } int main(){ int n; cin >> n; vector<long long> nums(n); vector<long long> sum_to_n(n); for(int i= 0; i<n; i++) cin >> nums[i]; for(int i = 0; i < n; i++){ long long currentSum = 0; long long currentCount = 0; for(int j = i; j >= 0; j--){ currentSum += nums[j]; if(modupalo(currentSum)){ currentCount += j == 0 ? 1L : sum_to_n[j - 1]; } } sum_to_n[i] = currentCount % P; } cout << sum_to_n[n-1] << endl; } |