Pagini recente » Cod sursa (job #985811) | Cod sursa (job #1117275) | Cod sursa (job #832075) | Cod sursa (job #2522884) | Cod sursa (job #3141047)
#include <bits/stdc++.h>
using namespace std;
const unsigned int base = 3;
unordered_map <unsigned int, int> mp;
void mask(string s)
{
unsigned int nr = 0;
for(int i = 0; i < s.size(); i ++)
nr = nr * base + s[i] - 'a';
// cout << nr << "\n";
mp[nr] = 1;
}
int main()
{
ios_base :: sync_with_stdio(0);
cin.tie(0);
freopen("abc2.in", "r", stdin);
freopen("abc2.out", "w", stdout);
string s;
cin >> s;
int len, cnt = 0;
string cuv;
while(cin >> cuv)
{
len = cuv.size();
mask(cuv);
}
int basePow = 1;
for(int i = 1; i < len; i ++)
basePow *= base;
// cout << basePow << "\n";
unsigned int nr = 0;
for(int i = 0; i < len; i ++)
nr = nr * base + s[i] - 'a';
if(mp.find(nr) != mp.end())
cnt ++;
// cout << nr << "\n";
for(int i = len; i < s.size(); i ++)
{
nr -= (s[i - len] - 'a') * basePow;
// cout << nr << " ";
nr = nr * base + s[i] - 'a';
// cout << nr << "\n";
if(mp.find(nr) != mp.end())
cnt ++;
}
cout << cnt;
return 0;
}