Pagini recente » Cod sursa (job #1231295) | Cod sursa (job #699624) | Cod sursa (job #2099785) | Cod sursa (job #444230) | Cod sursa (job #2485690)
#include<bits/stdc++.h>
#define d 256
using namespace std;
ifstream fin("strmatch.in");ofstream fout("strmatch.out");
int main(){
string A,B;
getline(fin,B);getline(fin,A);
long long n=A.length();long long m=B.length();
int long h=1,t=0,p=0;int q=101;long long w=0;long long arr[2000001];
long long i,j;
for(i=0;i<m-1;i++){
h=(h*d)%q;
}
for(i=0;i<m;i++){
p=(p*d+B[i])%q;
t=(t*d+A[i])%q;
}
for(i=0;i<=n-m;i++){
if(t==p){
for(j=0;j<m;j++){
if(B[j]!=A[i+j])break;
}
if(j==m){arr[w]=i;w++;}
}
if(i<n-m){
t=(d*(t-A[i]*h)+A[i+m])%q;
if(t<0)t+=q;
}
}
fout<<w<<endl;
for(i=0;i<w;i++)fout<<arr[i]<<' ';
return 0;}