Pagini recente » Cod sursa (job #842157) | Cod sursa (job #2120266) | Cod sursa (job #3296193) | Cod sursa (job #418013) | Cod sursa (job #2397854)
#include <fstream>
#include <vector>
#include <cstring>
#define mod 10007
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
vector <unsigned int> v[mod+1];
vector <unsigned int>::iterator it;
char S[10000005],S1[25];
unsigned int nr,p[21],ap,m,r;
int i;
int caut(int x){
int r=x%mod;
for(it=v[r].begin();it!=v[r].end();it++)
if(*it==x)
return 1;
return -1;
}
int main()
{ f>>(S+1);
p[1]=1;
for(i=2;i<=19;i++)
p[i]=p[i-1]*3;
while(f>>(S1+1)){
nr=0;
for(i=1;S1[i]!=0;i++)
nr=nr+(S1[i]-'a')*p[i];
r=nr%mod;
if(caut(nr)==-1)
v[r].push_back(nr);
}
m=strlen(S1+1);
nr=0;
for(i=1;i<=m;i++)
nr=nr+(S[i]-'a')*p[i];
ap=0;
for(i=m+1;S[i]!=0;i++){
if(caut(nr)!=-1)
ap++;
nr=nr/3+(S[i]-'a')*p[m];
}
if(caut(nr)!=-1)
ap++;
g<<ap;
return 0;
}