Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int n,MOD;
- #define MAXN 1000100
- string s;
- int tab[MAXN];
- int dyn[MAXN];
- int main()
- {
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- cin >> n >> MOD >> s;
- for (int i=0; i!=n; ++i)
- {
- if (s[i] == '1') tab[i] = 1;
- else tab[i] = 0;
- }
- dyn[0] = 1;
- dyn[1] = tab[1] * dyn[0];
- dyn[2] = tab[2] * (dyn[1] + dyn[0]);
- dyn[3] = tab[3] * (dyn[1] + dyn[2] + dyn[0]);
- dyn[4] = tab[4] * (dyn[1] + dyn[2] + dyn[3] + dyn[0]);
- dyn[5] = tab[5] * (dyn[1] + dyn[2] + dyn[3] + dyn[4] + dyn[0]);
- for (int i=6; i<n; ++i)
- {
- dyn[i] = (tab[i] * (dyn[i-1] + dyn[i-2] + dyn[i-3] + dyn[i-4] + dyn[i-5] + dyn[i-6]))%MOD;
- }
- cout << dyn[n-1]%MOD;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement