Pagini recente » Cod sursa (job #158509) | Cod sursa (job #1365398) | Cod sursa (job #2200754) | Cod sursa (job #358378) | Cod sursa (job #1487973)
#include <fstream>
#include <map>
#include <cstring>
using namespace std;
ifstream f("abc2.in");
ofstream g("abc2.out");
map <unsigned int,unsigned int> M;
int nr,i,l,n;
long long z;
unsigned int a;
char w[10000012],c[24];
int main()
{
f>>(w+1);
l=strlen(w+1);
while(f>>(c+1))
{
n=strlen(c+1);
for(i=1,a=0;i<=n;++i) a=a*3+c[i]-'0';
M[a]=1;
}
for(i=1,a=0,z=1;i<=n;++i) a=a*3+w[i]-'0',z*=3LL;
z/=3LL;
if(M.find(a)!=M.end()) ++nr;
for(i=n+1;i<=l;++i) {a=a-(w[i-n]-'0')*z; a=a*3+w[i]-'0'; if(M.find(a)!=M.end()) ++nr;}
g<<nr;
return 0;
}