Pagini recente » Cod sursa (job #1346637) | Cod sursa (job #1622201) | Cod sursa (job #2899565) | Cod sursa (job #3169366) | Cod sursa (job #2296806)
#include<cstdio>
#include<vector>
#include<cstring>
#include<set>
#define MOD 10041
using namespace std;
char a[10000005],b[50005];
set<unsigned> Hash[MOD+1];
int n,m,k;
unsigned ans,code,p;
FILE *in=fopen("abc2.in","r");
FILE *out=fopen("abc2.out","w");
int main(){
fgets(a,10000005,in);
while(fgets(b,50005,in)){
code=0;
for(int i=0;i<strlen(b)-1;i++)
code=code*3+(b[i]-'a');
Hash[code%MOD].insert(code);
}
k=strlen(b)-1; p=1;
for(int i=1;i<k;i++)
p*=3;
code=0;
for(int i=0;i<k;i++)
code=code*3+(a[i]-'a');
ans+=Hash[code%MOD].count(code);
for(int i=k;i<strlen(a)-1;i++){
code=(code-(a[i-k]-'a')*p)*3+(a[i]-'a');
ans+=Hash[code%MOD].count(code);
}
fprintf(out,"%d",ans);
}