func_code_string: #include <bits/stdc++.h>   using namespace std;   char b[1000050], a[1000050];   int n, m, p, P;   bool c[2050], ans[2050], Ans;   bool Calc(int x, int y, int z, int o, int u) {     for (; o >= z; o--) {       bool Flag = false;       while (y >= x) {         bool flag = true;         for (int j = y, k = o; j <= n && k <= m; j += p, k += u)           if (a[j] != b[k] || ((j + p > n) ^ (k + u > m))) {             flag = false;             break;           }         if (flag) {           c[y] = 1;           y--;           Flag = true;           break;         }         y--;       }       if (!Flag) return false;     }     return true;   }   void Put() {     for (int i = 1; i <= P; i++) putchar(ans[i] ?  1  :  0 );     puts(  );   }   void PUUUUUT() {     if (Ans)       for (int i = 1; i <= p; i++)         if (ans[i] && !c[i])           break;         else if (!ans[i] && c[i])           return;     for (int i = 1; i <= p; i++) ans[i] = c[i];     Ans = true;   }   void Solve() {     int k = n / p, l = n % p;     for (int i = 0; i <= l; i++)       if ((m - i) % k == 0 && (m - i) / k - i <= p - l) {         if (Calc(1, l, 1, i, (m - i) / k) &&             Calc(l + 1, p, i + 1, (m - i) / k, (m - i) / k))           PUUUUUT();         memset(c, 0, sizeof(c));       }     return;   }   int main() {     gets(a + 1);     gets(b + 1);     scanf( %d , &P);     n = strlen(a + 1);     m = strlen(b + 1);     p = min(P, n);     Solve();     if (!Ans)       puts( 0 );     else       Put();     return 0;   }   