Pagini recente » Cod sursa (job #861160) | Cod sursa (job #1471915) | Cod sursa (job #847496) | Cod sursa (job #145734) | Cod sursa (job #1418391)
#include <fstream>
#include <algorithm>
#include <string>
#include <vector>
#define MOD 666013
#define ui unsigned int
using namespace std;
ifstream fin ("abc2.in");
ofstream fout ("abc2.out");
vector < ui > H[MOD + 10];
string T, C;
ui N, aux, sol, P3[25], CH[250];
inline bool Caut(ui val)
{
ui l = val % MOD;
for (int i = 0; i < H[l].size(); i++)
{
if (H[l][i] == val) {
return 1;
}
}
return 0;
}
int main()
{
P3[1] = 1;
for (int i = 2; i <= 20; i++) {
P3[i] = P3[i - 1] * 3;
}
CH['a'] = 0;
CH['b'] = 1;
CH['c'] = 2;
fin >> T;
while (fin >> C)
{
N = C.size();
aux = 0;
for (int i = 0; i < N; i++) {
aux = aux + P3[i + 1] * CH[C[i]];
}
H[aux % MOD].push_back(aux);
}
aux = 0;
for (int i = 0; i < N; i++) {
aux = aux + P3[i + 1] * CH[T[i]];
}
sol = Caut(aux);
for (int i = N; i < T.size(); i++)
{
aux /= 3;
aux = aux + P3[N] * CH[T[i]];
sol += Caut(aux);
}
fout << sol << '\n';
fout.close();
return 0;
}