Pagini recente » Cod sursa (job #2529643) | Cod sursa (job #184693) | Cod sursa (job #949923) | Cod sursa (job #1237427) | Cod sursa (job #1362959)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
#define LCUV 23
#define LMAX 10000005
#define MOD 66013
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
char cuv[LCUV],s1[LMAX];
int ok,nr,numar,nr_poz,p=1;
vector <int>v[MOD+5];
vector <int>::iterator it;
int main()
{
f.getline(s1,LMAX);
f.getline(cuv,LCUV);
int l1=strlen(s1);
int l=strlen(cuv);
do
{
int nr=0,p=1;ok=0;
for (int i=0;i<l;i++)
{
nr+=p*(cuv[i]-'a');
p*=3;
}
for (it=v[nr%MOD].begin();it!=v[nr%MOD].end();it++)
if (*it==nr)ok=1;
if (ok==0)
v[nr%MOD].push_back(nr);
}
while (f.getline(cuv,LCUV));
p=1;
for (int i=0;i<l;i++)
{
numar+=(s1[i]-'a')*p;
p*=3;
}
p/=3;
for (int i=l;i<l1;i++)
{
for (it=v[numar%MOD].begin();it!=v[numar%MOD].end();it++)
if (*it==numar)
nr_poz++;
numar=numar/3+p*(s1[i]-'a');
}
g<<nr_poz;
}