#include <stdlib.h> #include <string.h> #include <stdio.h> int * get_next(char s[], int t) { int *next = (int *)malloc(t*sizeof(int)); next[0] = 0; int i; for (i = 1; i < t; i++) { if ( s[i] == s[next[i-1]] ) next[i] = next[i-1] + 1; else next[i] = 0; } return next; } int srt_cmp(int *next, char *s, char *ss, int lA, int la) { int i = 0, j = 0; while (i < lA && j < la) { if (s[i] == ss[j]) { i++; j++; } else { if (j == 0) i++; else j = next[j-1]; } } return (j >= la); } void main() { char s[200], ss[20]; fflush(stdin); scanf("%s %s", s, ss); int a = strlen(s); int b = strlen(ss); int *p = get_next(ss, b); int k = srt_cmp(p, s, ss,a,b); printf("%d", k); free(p); }