可能是我写的哈希太丑了
疯狂被撞(逃)
玄学水过去了
#include <bits/stdc++.h>
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int int_up = 2147483647;
const long long ll_up = 9223372036854775807;
const long long mod = 1e9+7;
long long hashs(int pos,int l,char *ch)
{
int seed = 233;
long long ha = 1;
for(int i =pos;i<l+pos;i++)
{
ha = (ha*seed+ch[i])%mod;
}
return ha;
}
char ch[1005],cr[1005];
long long vis[1005];
int main()
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
scanf("%s%s",ch,cr);
long long hash_cr = hashs(0,m,cr);
long long temp;
for(int i = 0;i<=n-m;i++)
vis[i] = hashs(i,m,ch);
while(k--)
{
int l,r;
scanf("%d%d",&l,&r);
int cnt = 0;
for(int i = l-1;i <= r - m;i++)
if(vis[i] == hash_cr) cnt++;
printf("%d\n",cnt);
}
return 0;
}