Pagini recente » Cod sursa (job #1678632) | Cod sursa (job #355264) | Cod sursa (job #1354494) | Cod sursa (job #26175) | Cod sursa (job #2206988)
#include <fstream>
#include <string.h>
using namespace std;
char a[2000005], b[2000005];
int af[2000005];
int has, hbs, c=0;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
bool match(int i)
{
for(int j=0; j<strlen(b); j++)
if(b[j]!=a[j+i]) return 0;
return 1;
}
int main()
{
f>>b;
f>>a;
for(int i=0; i<strlen(b); i++)
{hbs=((hbs*73)+b[i])%100007;
has=((has*73)+a[i])%100007;}
for(int i=0; i<=strlen(a)-strlen(b); i++)
{
if(hbs==has)
if(match(i))
{c++; af[c]=i;}
has=((has+ 100007-a[i]*((73%100007)*73)%100007)*73+a[i+strlen(b)])%100007;
}
g<<c<<'\n';
for(int i=1; i<=c; i++) g<<af[i]<<" ";
return 0;
}