Pagini recente » Cod sursa (job #2123530) | Cod sursa (job #1538726) | Cod sursa (job #1823010) | Cod sursa (job #2339808) | Cod sursa (job #1362900)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
#define LCUV 23
#define LMAX 10000005
#define MOD 666013
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
bool ok,ap;
char cuv[LCUV],s1[LMAX];
int nr,numar,nr_poz;
long long 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;
for (int i=0;i<l;i++)
{
nr+=p*(cuv[i]-'a');
p*=3;
}
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;
}