Pagini recente » Cod sursa (job #2718408) | Cod sursa (job #116123) | Cod sursa (job #3205862) | Cod sursa (job #1641055) | Cod sursa (job #1500658)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
typedef unsigned int ui;
char c[100000010],d[25];
ui x;
const unsigned int mod=847129;
int m,i;
bool ok=1;
vector<ui> h[mod+2];
int Cautare(ui x)
{ ui i, r=x%mod;
for(i=0;i<h[r].size();i++)
if(h[r][i]==x) return 1;
return 0;
}
int main()
{ f>>(c+1);
int n=strlen(c+1);
while(f>>(d+1))
{ if(ok==1) {m=strlen(d+1);ok=0;}
x=0;
for(i=1;i<=m;i++)
{ x=x*3+d[i]-'a';
if(!Cautare(x)) h[x%mod].push_back(x);
}
}
int nr=0;x=0; ui p=1;
for(i=1;i<=m;i++) {x=x*3+c[i]-'a';p*=3;} p/=3;
nr+=Cautare(x);
for(i=m+1;i<=n;i++)
{ x=(x%p)*3+c[i]-'a';
nr+=Cautare(x);
}
g<<nr<<'\n';
g.close(); return 0;
}
/*int Cautare(ui x)
{ ui i,r=x%mod;
for(i=0;i<h[r].size();i++)
if(h[r][i]==x) return 1;
return 0;
}*/