Pagini recente » Cod sursa (job #121867) | Cod sursa (job #613631) | Cod sursa (job #1543564) | Cod sursa (job #2953092) | Cod sursa (job #2562990)
#include <fstream>
#include <cstring>
#include <vector>
#define NM 10000005
#define ll long long
#define MOD 5099
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
int n,i,sol;
ll p3[30];
char s[NM],cuv[30];
vector < ll > a[MOD+5];
int cauta(ll cod){
int r;
r=cod%MOD;
for(int i=0;i<a[r].size();i++)
if(a[r][i]==cod)
return 1;
return 0;
}
int main()
{
f>>s;
//g<<s<<' ';
p3[0]=1;
for(i=1;i<20;i++) p3[i]=p3[i-1]*3;
while(f>>cuv){
//g<<cuv<<' ';
ll val;
val=0;
n=strlen(cuv);
for(i=0;i<n;i++)
val+=(p3[i]*(cuv[i]-'a'));
if(cauta(val)==0)
a[val%MOD].push_back(val);
}
ll val;
val=0;
for(i=0;i<n;i++)
val+=(p3[i]*(cuv[i]-'a'));
sol+=cauta(val);
for(int i=n;i<strlen(s);i++){
val/=3;
val+=(p3[n-1]*(s[i]-'a'));
sol+=cauta(val);
}
g<<sol<<'\n';
return 0;
}