Pagini recente » Cod sursa (job #1915628) | Cod sursa (job #1629224) | Cod sursa (job #1301267) | Cod sursa (job #3201426) | Cod sursa (job #2295863)
#include <iostream>
#include <fstream>
#include <vector>
#define MOD 6013
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
vector <unsigned int> H[MOD];
unsigned int nr;
int cauta(int val)
{
unsigned int n,i;
n=val%MOD;
for(i=0;i<H[n].size();i++)
{
if(H[n][i]==val)
{
return 1;
}
}
return 0;
}
int main()
{
string s,cuv;
unsigned int val,p,i,n,d;
f>>s;
while(f>>cuv)
{
val=0;
p=1;
n=cuv.size();
for(i=0;i<n;i++)
{
val=val+p*(cuv[i]-'a');
p=p*3;
}
H[val%MOD].push_back(val);
}
val=0;
p=1;
for(i=0;i<n;i++)
{
val=val+p*(s[i]-'a');
p=p*3;
}
p=p/3;
if(cauta(val)==1)
{
nr++;
}
d=s.size();
while(i<d)
{
val=val-(s[i-n]-'a');
val=val/3+(s[i]-'a')*p;
if(cauta(val)==1)
{
nr++;
}
i++;
}
g<<nr;
return 0;
}