func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1 << 30;   int n, in[100010], cnt, dyn[100010];   void check() {     if (cnt < 2) {       printf( %d n , cnt);       exit(0);     }   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d , &in[i]);     for (int i = n - 1; i >= 0; i--) dyn[i] = dyn[i + 1] + (in[i] == 0 ? 1 : 0);     if (n == 2) {       if (in[0] == 0 && in[1] != 0)         printf( 1 n );       else         printf( 0 n );       return 0;     }     if (dyn[0] > 1) {       int ans = INF;       if (dyn[0] == n) ans = min(ans, 0);       if (dyn[1] >= n - 2) ans = min(ans, n - 1 - dyn[1]);       if (dyn[2] == n - 2) ans = min(ans, n - 2);       if (ans < 2)         printf( %d n , ans);       else         printf( 2 n );       return 0;     }     bool t = true;     for (int i = 2; i < n; i++)       if (in[i] * in[i - 2] != in[i - 1] * in[i - 1]) t = false;     if (t) {       printf( 0 n );       return 0;     }     if (n == 3) {       if (in[1] == 0) goto l;     }     t = true;     for (int i = 2; i < n; i++)       if (in[i] * in[1] != in[2] * in[i - 1]) t = false;     if (t) {       printf( 1 n );       return 0;     }   l:;     cnt = 0;     for (int i = 1; i < n; i++) {       if (in[i] * in[0] != in[1] * in[i - 1]) {         cnt++;         if (i < n - 1 && in[i + 1] * in[0] != in[1] * in[i - 1]) cnt++;         i++;       }     }     check();     cnt = 0;     for (int i = 1; i < n; i++) {       if (in[i] * in[1] != in[2] * in[i - 1]) {         cnt++;         if (i < n - 1 && in[i + 1] * in[1] != in[2] * in[i - 1]) cnt++;         i++;       }     }     check();     cnt = 0;     for (int i = 1; i < n; i++) {       if (in[i] * in[0] != in[2] * in[i - 1]) {         cnt++;         if (i < n - 1 && in[i + 1] * in[0] != in[2] * in[i - 1]) cnt++;         i++;       }     }     check();     printf( 2 n );     return 0;   }   