Pagini recente » Cod sursa (job #3269171) | Cod sursa (job #2055635) | Cod sursa (job #2323303) | Cod sursa (job #740597) | Cod sursa (job #615121)
Cod sursa(job #615121)
#include<fstream>
#include<string.h>
#include<deque>
using namespace std;
deque<char> B,A;
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");
long a=0,z,d,l,ll,i=0,p[1000];
char g[1];
while(f.get(g[1]))
if(g[1]=='\n')
break;
else
A.push_back(g[1]);
l=A.size();
while(f.get(g[1]))
if(g[1]=='\n')
break;
else
B.push_back(g[1]);
ll=B.size();
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;}