Pagini recente » Cod sursa (job #3229700) | Cod sursa (job #619080) | Cod sursa (job #1022618) | Cod sursa (job #2080319) | Cod sursa (job #2047076)
#include <iostream>
#include <fstream>
#include <cstring>
#define Dmax 2000005
#define d 73
#define q 100007
using namespace std;
ifstream f("rk.in");
char P[Dmax],T[Dmax];
int n,m;
int verif(int s)
{ for(int i=1;i<=m;i++)
if(P[i]!=T[s+i]) return 0;
return 1;
}
int main()
{ f>>(P+1)>>(T+1);
m=strlen(P+1),n=strlen(T+1);
if(m>n) return 0;
int h=1;
for(int i=1;i<m;i++) h=h*d%q;
int p=0,t=0;
for(int i=1;i<=m;i++)
{ p=(p*d+P[i])%q;
t=(t*d+T[i])%q;
}
for(int s=0;s<=n-m;s++)
{ if(p==t && verif(s)) cout<<"Modelul apare cu deplasamentul "<<s<<'\n';
if(s<n-m) t=((d*(t-T[s+1]*h)+T[s+m+1])%q+q)%q;
}
return 0;
}