Pagini recente » Cod sursa (job #1767124) | Profil bodea.georgiana | Cod sursa (job #2325990) | Cod sursa (job #1890573) | Cod sursa (job #2296018)
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
#define mod 11083
vector <unsigned int> v[mod];
unsigned int verificare_candidati(unsigned int nr)
{
unsigned int i,aux,dimensiune;
aux=nr%mod;
dimensiune=v[aux].size();
for(i=0;i<dimensiune;i++)
{
if(v[aux][i]==nr)
{
return 1;
}
}
return 0;
}
int main()
{
ifstream fin("abc2.in");
ofstream fout("abc2.out");
string sir_initial,cuvant;
unsigned int nr,p=1,nr_candidati=0,i;
unsigned int lgcuv,lgsir;
fin>>sir_initial;
lgsir=sir_initial.size();
fin>>cuvant;
lgcuv=cuvant.size();
nr=0;
for(i=0;i<lgcuv;i++)
{
nr*=3;
nr+=(cuvant[i]-'a');
}
v[nr%mod].push_back(nr);
while(!fin.eof())
{
fin>>cuvant;
nr=0;
for(i=0;i<lgcuv;i++)
{
nr*=3;
nr+=(cuvant[i]-'a');
}
v[nr%mod].push_back(nr);
}
nr=0;
for(i=0;i<lgcuv;i++)
{
p*=3;
nr*=3;
nr+=(sir_initial[i]-'a');
}
p/=3;
if(verificare_candidati(nr)==1)
{
nr_candidati++;
}
for(i=lgcuv;i<lgsir;i++)
{
nr-=p*(sir_initial[i-lgcuv]-'a');
nr*=3;
nr+=(sir_initial[i]-'a');
if(verificare_candidati(nr)==1)
{
nr_candidati++;
}
}
fout<<nr_candidati;
fin.close();
fout.close();
return 0;
}