今天是2017/7/11,DCDCBigBig的第二十七篇博文
RK
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const unsigned long long d=
26;
unsigned long long h=
0,p=
0,t=
0;
int n,len=
0,len1=
0,ans=
0;
char s[
100001],s1[
100001];
int main(){
h=
1;
ans=p=t=
0;
scanf(
"%s",s);
scanf(
"%s",s1);
len=
strlen(s);
len1=
strlen(s1);
for(
int i=
1;i<len;++i){
h=h*d;
}
for(
int i=
0;i<len;++i){
p=d*p+s[i]-
'A';
t=d*t+s1[i]-
'A';
}
for(
int i=
0;i<=len1-len;++i){
if(p==t){
printf(
"YES");
return 0;
}
if(i<len1-len){
t=d*(t-(s1[i]-
'A')*h)+s1[i+len]-
'A';
}
}
printf(
"NO");
}
一