Pagini recente » Cod sursa (job #2169985) | Cod sursa (job #787042) | Cod sursa (job #2578384) | Cod sursa (job #251280) | Cod sursa (job #2634251)
#include <bits/stdc++.h>
#define MOD 666013
#define baza 5
#define MOD2 1000003
#define baza2 7
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
long long put(long long a,long long b)
{
if (b==0)
{
return 1;
}
long long rez=put(a,b/2);
if (b%2==0)
{
return (rez*rez)%MOD;
}
return ((rez*rez)%MOD*a)%MOD;
}
long long put2(long long a,long long b)
{
if (b==0)
{
return 1;
}
long long rez=put2(a,b/2);
if (b%2==0)
{
return (rez*rez)%MOD2;
}
return ((rez*rez)%MOD2*a)%MOD2;
}
long long inv (long long a)
{
return put(a,MOD+2);
}
char s[10000001],s1[25];
long long n1,nr,n,imp,val1,nr1,lung,j,sum,q,val2,p;
long long fr[50005];
bool ok (long long a)
{
int st=1,dr=q,mij;
while (st<=dr)
{
mij=(st+dr)/2;
if (fr[mij]<a)
{
st=mij+1;
}
else
if (fr[mij]>a)
{
dr=mij-1;
}
else
{
return 1;
}
}
return 0;
}
int main()
{
f>>s;
n=strlen(s);
q=0;
while (f>>s1)
{
n1=strlen(s1);
nr=0;
for (j=0;j<n1;j++)
{
nr=nr*3+(s1[j]-'a');
}
fr[++q]=nr;
}
sort (fr+1,fr+q+1);
nr=0;
p=1;
for (j=1;j<=n1-1;j++)
{
p=p*3;
}
nr=0;
for (j=0;j<n1;j++)
{
nr=nr*3+(s[j]-'a');
}
sum=sum+ok(nr);
for (j=1;j<n-n1+1;j++)
{
nr=nr-p*(s[j-1]-'a');
nr=nr*3+(s[j+n1-1]-'a');
sum=sum+ok(nr);
}
g<<sum;
return 0;
}