#include <algorithm>
#include <cstdio>
#include <vector>
#include <set>
#include <climits>
using namespace std;
long a[300002];
long b[300002];
int main()
{
long p = 1000000007;
long n;
scanf("%ld", &n);
b[0] = 1;
for (long i = 1; i <= n; ++i)
{
long res = 0, sum = 0;
scanf("%ld", &a[i]);
for (long j = i; j > 0; --j)
{
sum = (sum + a[j]) % p;
if (sum % 2 == 0)
res = (res + b[j - 1]) % p;
}
b[i] = res;
}
printf("%ld", b[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 | #include <algorithm> #include <cstdio> #include <vector> #include <set> #include <climits> using namespace std; long a[300002]; long b[300002]; int main() { long p = 1000000007; long n; scanf("%ld", &n); b[0] = 1; for (long i = 1; i <= n; ++i) { long res = 0, sum = 0; scanf("%ld", &a[i]); for (long j = i; j > 0; --j) { sum = (sum + a[j]) % p; if (sum % 2 == 0) res = (res + b[j - 1]) % p; } b[i] = res; } printf("%ld", b[n]); return 0; } |
English