Pagini recente » Cod sursa (job #646623) | Cod sursa (job #560994) | Cod sursa (job #1012096) | Borderou de evaluare (job #177788) | Cod sursa (job #413008)
Cod sursa(job #413008)
using namespace std;
#include <fstream>
#include <iostream>
#include <cstring>
#include <set>
#include <algorithm>
set<unsigned> S;
char s[10000005], c[25];
unsigned Val(char * s, int nC){
int NR=0;
for(int i=0;i<nC;++i)
NR=3*NR+s[i]-'a';
return NR;
}
int main(){
ifstream fin("abc2.in");
int nS=0;
char ch;
while((ch=fin.get())>='a') s[nS++]=ch;
s[nS]=0;
fin.getline(c,25);
//cout<<s<<endl<<endl;
//cout.flush();
int nC=strlen(c);
S.insert(Val(c,nC) );
while(fin.getline(c,25))
S.insert(Val(c,nC));
ofstream fout("abc2.out");
int rez=0;
int NR=0;
unsigned P=1;
for(int i=0;i<nC;++i)
NR=3*NR+s[i]-'a',P*=3;
P/=3;
if(S.find(NR)!=S.end())
++rez;
for(int i=nC;i<nS;++i){
NR%=P;
NR = 3*NR + s[i]-'a';
if(S.find(NR)!=S.end())
++rez;
}
fout<<rez<<endl;
return 0;
}