Pagini recente » Cod sursa (job #2835754) | Cod sursa (job #3214946) | Cod sursa (job #232493) | Cod sursa (job #333714) | Cod sursa (job #1850914)
#include <iostream>
#include<bits/stdc++.h>
#include <cstdio>
#include <cstring>
#include <vector>
#define M 666013
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
vector <unsigned int> h[M];
char s[10000001], cuv[50001];
int v[25];//puterile lui 3
int caut(long long x){
long long y = x % M, i, ss = h[y].size();
for(i = 0; i < ss; ++i){
if(h[y][i] == x) return 1;
}
return 0;
}
int main()
{
long long i;
unsigned n, n1 = 0, aux, nr = 0;
fin>>s;
//fin>>cuv;
n = strlen(s);
//n1 = strlen(cuv);
v[0] = 1;
for(i = 1; i <= 20; i++)
v[i] = v[i - 1] * 3;
/* aux = 0;
for(i = 0; i < n1; ++i){
aux += v[i] * (cuv[i] - 'a');
}
if(caut(aux) == 0){
h[aux % M].push_back(aux);
}
*/
while(fin>>cuv){
if(!n1) n1 = strlen(cuv);
aux = 0;
for(i = 0; i < n1; ++i){
aux += v[i] * (cuv[i] - 'a');
}
//if(caut(aux) == 0){
h[aux % M].push_back(aux);
//}
}
aux = 0;
for(i = 0; i < n1; ++i){
aux += v[i] * (s[i] - 'a');
}
nr += caut(aux);
for(i = n1; i < n; i++){
aux /= 3;
aux += v[n1 - 1] * (s[i] - 'a');
nr += caut(aux);
}
fout<<nr;
fout.close();
return 0;
}