#include using namespace std; void build_kmp(char * a, int * kmp) { kmp[0]=-1; for(int i=1;a[i-1];i++) { int j=kmp[i-1]; while(j>=0 && a[j]!=a[i-1]) j=kmp[j]; kmp[i]=j+1; } } void find(char * a, int *kmp, char * b) { int j=0; for(int i=0;b[i];i++) { while(j>=0 && a[j]!=b[i]) j=kmp[j]; j++; if(j==strlen(a)) { printf("%d\n", i); } } } void stnprintf(char * a, int len) { for(int i=0;a[i];i++) putchar(i "); stnprintf(a,kmp[i]); printf("\n"); } char b[1234]; scanf("%s",b); find(a,kmp,b); return 0; }