Advertisement
SuitNdtie

Ctrl F 2

May 10th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. #include<stdio.h>
  2. typedef long long int ll;
  3. ll const prime = 98765431;
  4.  
  5. int main()
  6. {
  7.     int n,m;
  8.     scanf("%d %d",&n,&m);
  9.     char str[n+1];
  10.     scanf("%s",str);
  11.     char word[m+1];
  12.     scanf("%s",word);
  13.     ll mb = 1;
  14.     ll hw = 0;
  15.    
  16.     for(int i = 0 ; i < m ; i ++){
  17.         if(i != 0)mb *= prime;
  18.         hw *= prime;
  19.         hw += word[i];
  20.     }
  21.     ll hs = 0;
  22.     int cnt = 0;
  23.     for(int i = 0 ; i < n ; i ++){
  24.         hs *= prime;
  25.         hs += str[i];
  26.         if(i >= m - 1){
  27.     //  printf("I %d : Test %lld == %lld ? \n",i,hs,hw);
  28.             if(hs == hw){
  29.                 cnt ++;
  30.             }
  31.             hs -= str[i-m+1]*mb;   
  32.         }
  33.        
  34.     }
  35.     printf("%d",cnt);
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement