Advertisement
istinishat

Double_Hashing_CF_271D

Jun 1st, 2017
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define MOD 1000000007
  5. #define MOD1 1000000009
  6. #define PR 43
  7. #define PR1 37
  8. #define ll long long
  9.  
  10. int mod_mul(long long a,long long b,int md)
  11. {
  12.     return (a*b)%md;
  13. }
  14.  
  15. int mod_plus(int a,int b,int md)
  16. {
  17.     return (a+b)%md;
  18. }
  19.  
  20. string str,arr;
  21. set<pair<int,int> >s;
  22.  
  23.  
  24. int main()
  25. {
  26.     //freopen("input.txt","r",stdin);
  27.     int i,j,k,t,a;
  28.     int xx,pw,pw1,xx1;
  29.     cin>>str>>arr>>k;
  30.     for(i=0;i<str.size();i++){
  31.         t=0;
  32.         xx=0;
  33.         pw=1;
  34.         pw1=1;
  35.         xx1=0;
  36.         for(j=i,a=0;j<str.size();j++,a++){
  37.             if(arr[str[j]-'a']=='0')t++;
  38.             if(t>k)break;
  39.             xx=mod_plus(xx,mod_mul(pw,str[j],MOD),MOD);
  40.             xx1=mod_plus(xx1,mod_mul(pw1,str[j],MOD1),MOD1);
  41.             s.insert(make_pair(xx,xx1));
  42.             pw=mod_mul(pw,PR,MOD);
  43.             pw1=mod_mul(pw1,PR1,MOD1);
  44.         }
  45.     }
  46.     cout<<s.size()<<endl;
  47.  
  48.     return 0;
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement