Pagini recente » Cod sursa (job #1427877) | Cod sursa (job #2278626) | Cod sursa (job #1879093) | Cod sursa (job #1558012) | Cod sursa (job #1418389)
#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];
bool Caut(ui val)
{
ui l = val % MOD;
vector < ui > :: iterator it;
it = find(H[l].begin(), H[l].end(), val);
return (it != H[l].end());
}
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 (ui 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;
}