Pagini recente » Cod sursa (job #792698) | Cod sursa (job #1008769) | Cod sursa (job #1055990) | Cod sursa (job #596556) | Cod sursa (job #2291390)
#include <bits/stdc++.h>
#define ll long long
#define mod 31973
using namespace std;
ifstream in("abc2.in");
ofstream out("abc2.out");
string s, g;
int sz, dim, rs;
ll a, b, c;
vector <ll> v[mod + 123];
int main() {
in >> s;
while (in >> g) {
dim = g.size();
a = b = c = 0;
for (int i = 0; i < dim; i++)
switch (g[i]) {
case 'a' : a |= (1 << i); break;
case 'b' : b |= (1 << i); break;
case 'c' : c |= (1 << i); break;
}
v[((a << 40LL) | (b << 20LL) | c) % mod].push_back((a << 40LL) | (b << 20LL) | c);
}
sz = s.size();
a = b = c = 0;
for (int i = 0; i < sz; i++) {
if (i >= dim) {
a >>= 1LL;
b >>= 1LL;
c >>= 1LL;
}
switch (s[i]) {
case 'a' : a |= (1 << min(i, dim - 1)); break;
case 'b' : b |= (1 << min(i, dim - 1)); break;
case 'c' : c |= (1 << min(i, dim - 1)); break;
}
for (auto i : v[((a << 40LL) | (b << 20LL) | c) % mod])
if (i == ((a << 40LL) | (b << 20LL) | c)) {
rs++;
break;
}
}
out << rs;
return 0;
}