func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = (1 << 18);   const double PI = acos(-1.0);   char s[N];   int lA, lB;   int a[N], b[N];   int inB[110][N];   int S, B;   struct cpx {     double x, y;     cpx(double p = 0, double q = 0) : x(p), y(q) {}     cpx operator+(cpx &o) { return cpx(x + o.x, y + o.y); }     cpx operator-(cpx &o) { return cpx(x - o.x, y - o.y); }     cpx operator*(cpx &o) { return cpx(x * o.x - y * o.y, x * o.y + y * o.x); }   } u[N], v[N];   void fft(cpx *a, int n, int f) {     int i, j, k;     for (i = j = 0; i < n; ++i) {       if (i > j) swap(a[i], a[j]);       for (k = n >> 1; (j ^= k) < k; k >>= 1)         ;     }     for (i = 1; i < n; i <<= 1) {       cpx wn(cos(PI / i), f * sin(PI / i));       for (j = 0; j < n; j += i << 1) {         cpx w(1, 0);         for (k = 0; k < i; ++k, w = w * wn) {           cpx x = a[j + k], y = w * a[i + j + k];           a[j + k] = x + y;           a[i + j + k] = x - y;         }       }     }     if (f == -1)       for (i = 0; i < n; ++i) a[i].x /= n, a[i].y /= n;   }   void work(int *a, int A, int id) {     int n = 1;     while (n <= A + lB) n <<= 1;     for (int i = 0; i < A; ++i) u[i] = cpx(a[i], 0);     for (int i = A; i < n; ++i) u[i] = cpx(0, 0);     for (int i = 0; i < A - 1 - i; ++i) swap(u[i], u[A - 1 - i]);     for (int i = 0; i < lB; ++i) v[i] = cpx(b[i], 0);     for (int i = lB; i < n; ++i) v[i] = cpx(0, 0);     fft(u, n, 1), fft(v, n, 1);     for (int i = 0; i < n; ++i) u[i] = u[i] * v[i];     fft(u, n, -1);     for (int i = 0; i < lB; ++i) inB[id][i] = (A - round(u[i].x)) / 2;   }   int main() {     scanf( %s , s);     lA = strlen(s);     for (int i = 0; i < lA; ++i) a[i] = (s[i] ==  1  ? 1 : -1);     scanf( %s , s);     lB = strlen(s);     for (int i = 0; i < lB; ++i) b[i] = (s[i] ==  1  ? 1 : -1);     S = sqrt(lA * log2(lA));     B = ceil(1. * lA / S);     for (int i = 0; i < B; ++i) {       int l = i * S, r = min(lA, l + S);       work(a + l, r - l, i);     }     int q;     scanf( %d , &q);     while (q--) {       int l, r, len, res = 0;       scanf( %d %d %d , &l, &r, &len);       int p = l / S, q = (l + len - 1) / S;       if (p == q) {         for (int i = l; i < l + len; ++i) res += (a[i] != b[i - l + r]);       } else {         for (int i = l; i < (p + 1) * S; ++i) res += (a[i] != b[i - l + r]);         for (int i = p + 1; i < q; ++i) res += (inB[i][(i + 1) * S - 1 - l + r]);         for (int i = q * S; i < l + len; ++i) res += (a[i] != b[i - l + r]);       }       printf( %d n , res);     }   }   