Pagini recente » Cod sursa (job #2851033) | Cod sursa (job #2665961) | Cod sursa (job #693235) | Cod sursa (job #2497913) | Cod sursa (job #1587990)
#include <fstream>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int Mn = 1e7 + 8;
const int mod = 666013;
int n,m,sol;
int val,pw[21];
char s[Mn],w[21];
vector< int > h[mod];
bool found(ll x)
{
int y = x % mod;
for (int i = 0;i < h[y].size();i++)
if (h[y][i] == x)
return 1;
return 0;
}
int main()
{
ifstream fin("abc2.in");
ofstream fout("abc2.out");
fin >> s;
n = strlen(s);
pw[0] = 1;
for (int i = 1;i <= 20;i++)
pw[i] = pw[i - 1] * 3;
for (;fin >> w;)
{
m = strlen(w);
val = 0;
for (int i = 0;i < m;i++)
val = val + pw[i] * (w[i] - 'a');
if (!found(val))
h[val % mod].push_back(val);
}
val = 0;
for (int i = 0;i < m;i++)
val = val + pw[i] * (s[i] - 'a');
sol = found(val);
for (int i = m;i < n;i++)
{
val = val / 3 + pw[m - 1] * (s[i] - 'a');
sol += found(val);
}
fout << sol << "\n";
return 0;
}