Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int input(){
- int res = 0; char c = ' ';
- while (c < '0') c = getchar();
- while (c >= '0') res = res * 10 + (c - '0'), c = getchar();
- return res;
- }
- const int N = 1e5 + 1, MOD = 1e9 + 7;
- int sum(int f, int s){
- return (f + s < MOD ? f + s : f + s - MOD);
- }
- int dif(int f, int s){
- return (f - s < 0 ? f - s + MOD : f - s);
- }
- int f[N], cnt[10], a[N], cur;
- int main(){
- int n = input();
- for (int i = 1; i <= n; ++ i){
- char c; cin >> c;
- a[i] = c - '0';
- }
- f[0] = 1;
- for (int i = 1, j = 1; i <= n; ++ cnt[a[i ++]]){
- while (cnt[a[i]]){
- cur = dif(cur, f[j]);
- -- cnt[a[j]], ++ j;
- }
- cur = sum(cur, f[i] = sum(cur, f[j - 1]));
- }
- cout << f[n];
- }
Advertisement
Add Comment
Please, Sign In to add comment