Pagini recente » Cod sursa (job #1537305) | Cod sursa (job #2890522) | Cod sursa (job #3161028) | Cod sursa (job #2211126) | Cod sursa (job #1786267)
#include <fstream>
#include <cstring>
#include <vector>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
const long long prim = 2000003;
int l, sol;
char a[10000005];
char c[25];
vector<long long> v[prim + 5];
long long convert(char s[25], int l) {
long long sc = 0;
long long b = 1;
for (int i = l - 1; i >= 0; --i) {
sc += (s[i] - 'a' + 1) * b;
b *= 4;
}
return sc;
}
int main() {
fin >> a;
char s[25];
while (fin >> s) {
l = strlen(s);
long long rez = convert(s, l);
int r = rez % prim;
v[r].push_back(rez);
}
int n = strlen(a);
for (int i = 0; i < l - 1; ++i) {
c[i + 1] = a[i];
}
c[0] = 'a';
long long rez = convert(c, l);
for (int i = l - 1; i < n; ++i) {
c[l - 1] = a[i];
long long rez = convert(c, l);
int r = rez % prim;
int var = 0;
for (int i = 0; i < v[r].size(); ++i) {
if (v[r][i] == rez) {
var = 1;
}
}
if (var == 1) {
sol++;
}
}
fout << sol;
return 0;
fout.close();
}