Cod sursa(job #614895)

Utilizator mening12001Andrei Geogescu mening12001 Data 7 octombrie 2011 21:47:07
Problema Potrivirea sirurilor Scor 18
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<string.h>
using namespace std;
char A[20000],B[20000];
int hashA(int a,int b)
{int z,S=0;
for(int i=a;i<b;i++)
{z=A[i];
S=S%100+A[i]%100;}
return S%100;}
int hashB(int a,int b)
{int z,S=0;
for(int i=a;i<b;i++)
{z=B[i];
S=S%100+B[i]%100;}
return S%100;}
int cmp(int a,int b)
{for(int i=0;i<b;i++)
if(A[i]!=B[a+i])
return 0;
return 1;}
int main()
{ifstream f("strmatch.in");
ofstream h("strmatch.out");
int a=0,z,d,l,ll,i=0,p[1000];
f>>A;
f>>B;
l=strlen(A);
ll=strlen(B);
z=hashA(0,l);
d=hashB(0,l);
while(a<=ll-l&&i<=1000)
{if(z==d&&cmp(a,1)==1)
{++i;
p[i]=a;}
d=d+B[a+l]%100-B[a]%100;
a++;}
h<<i<<"\n";
for(int k=1;k<=i;k++)
h<<p[k]<<" ";
return 0;}