Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <sstream>
- #include <cstdlib>
- #include <cstring>
- #include <cstdio>
- #include <string>
- #include <vector>
- #include <queue>
- #include <deque>
- #include <cmath>
- #include <stack>
- #include <list>
- #include <set>
- #include <string.h>
- #include <map>
- using namespace std;
- typedef long long ll;
- #define pii pair<int,int>
- #define mp make_pair
- #define f first
- #define s second
- #define BASE 256
- #define MOD 34027797218763967LL
- #define MAXN 1509
- set<ll>ok;
- int k;
- bool bad[26];
- char s[MAXN];
- string ab;
- void Read() {
- scanf("%s",s);
- cin>>ab;
- scanf("%d",&k);
- for (int i=0;i<26;i++)
- if (ab[i]=='0')
- bad[i]=true;
- }
- void Solve() {
- // hashing
- int len=strlen(s);
- for (int i=0;i<len;i++) {
- int currbad=0;
- ll hash=0;
- for (int j=i;j<len;j++) {
- hash=(hash*BASE +s[j])%MOD;
- if (bad[s[j]-97])
- currbad++;
- if (currbad<=k) {
- ok.insert(hash);
- }
- }
- }
- printf("%d\n",ok.size());
- }
- int main () {
- //freopen("cf.in","r",stdin);
- //freopen("cf.out","w",stdout);
- Read();
- Solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement