Pagini recente » Cod sursa (job #2702355) | Cod sursa (job #294785) | Cod sursa (job #173417) | Cod sursa (job #2241374) | Cod sursa (job #2291391)
#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;
}
bool f = 0;
for (auto i : v[((a << 40LL) | (b << 20LL) | c) % mod])
if (i == ((a << 40LL) | (b << 20LL) | c)) {
f = 1;
break;
}
if (!f)
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;
}