Pagini recente » Istoria paginii utilizator/deea.andie | Cod sursa (job #293457) | Cod sursa (job #1006720) | Cod sursa (job #972643) | Cod sursa (job #1886449)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <unordered_map>
#define MAXT 10000050
#define MAXN 25
using namespace std;
char text[MAXT], cuv[MAXN];
int n, sol;
unordered_map<long long, int> um;
void add()
{
n = strlen(cuv) - 2;
long long fact = 1;
long long nr = 0;
for (int i = n; i >= 0; i--) {
nr += fact*(cuv[i]-'a'+1);
fact += fact<<1;
}
um[nr]++;
}
void solve()
{
long long fact = 1;
long long nr = 0;
for (int i = strlen(text)-1, t = 0; i >= 0; i--, t++) {
if (t <= n) {
nr += fact*(text[i]-'a'+1);
fact *= ((t<n)<<1) | 1;
}
else {
nr -= (text[i+n+1]-'a'+1);
nr /= 3;
nr += fact*(text[i]-'a'+1);
}
if (um.find(nr) != um.end())
sol++;
}
printf("%d", sol);
}
int main()
{
freopen("abc2.in", "r", stdin);
freopen("abc2.out", "w", stdout);
gets(text);
fgets(cuv, MAXN+1, stdin);
while (!feof(stdin)) {
add();
fgets(cuv, MAXN+1, stdin);
}
//solve();
return 0;
}