#include <bits/stdc++.h> using namespace std; #define N 300005 #define M 1000000007 long long liczby[N]; long long ciagi[N]; long long suma; int n; long long maxi; long long ans; bool mozna; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); cin >> n; for(int i = 0; i <n;i++){ cin >> liczby[i]; maxi = max(maxi, liczby[i]); liczby[i] %= M; } if(maxi <= 100){ mozna = true; ans = 1; for(int i = 0; i <n;i++){ if (liczby[i] % 2 == 1) mozna = !mozna; if (mozna && i != n-1) ans = (ans * 2) % M; } if (mozna) cout << ans % M; else cout << "0"; return 0; } ciagi[0] = 1; for(int i = 0; i <n;i++){ if(ciagi[i] > 0){ suma = 0; for(int j = i; j < n ; j++){ //cout << i << " " << j << endl; suma = (liczby[j] + suma) % M; suma = suma % M; //cout << suma << endl; if (suma % 2 == 0) { ciagi[j+1] = (ciagi[j+1]%M + ciagi[i]%M)%M; //cout << "test"; } } } } //cout << "ciagi:"; for(int i = 0; i <n;i++) cout << ciagi[i] << " "; //cout << endl; cout << ciagi[n] % M; 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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #include <bits/stdc++.h> using namespace std; #define N 300005 #define M 1000000007 long long liczby[N]; long long ciagi[N]; long long suma; int n; long long maxi; long long ans; bool mozna; int main(){ cin.tie(0); ios_base::sync_with_stdio(0); cin >> n; for(int i = 0; i <n;i++){ cin >> liczby[i]; maxi = max(maxi, liczby[i]); liczby[i] %= M; } if(maxi <= 100){ mozna = true; ans = 1; for(int i = 0; i <n;i++){ if (liczby[i] % 2 == 1) mozna = !mozna; if (mozna && i != n-1) ans = (ans * 2) % M; } if (mozna) cout << ans % M; else cout << "0"; return 0; } ciagi[0] = 1; for(int i = 0; i <n;i++){ if(ciagi[i] > 0){ suma = 0; for(int j = i; j < n ; j++){ //cout << i << " " << j << endl; suma = (liczby[j] + suma) % M; suma = suma % M; //cout << suma << endl; if (suma % 2 == 0) { ciagi[j+1] = (ciagi[j+1]%M + ciagi[i]%M)%M; //cout << "test"; } } } } //cout << "ciagi:"; for(int i = 0; i <n;i++) cout << ciagi[i] << " "; //cout << endl; cout << ciagi[n] % M; return 0; } |