func_code_string: #include <bits/stdc++.h>   using namespace std;   FILE* g_f_;   int g_s_;   char* g_g_;   template <class _T>   inline _T sqr(const _T& x) {     return x * x;   }   template <class _T>   inline string tostr(const _T& a) {     ostringstream os(  );     os << a;     return os.str();   }   const long double PI = 3.1415926535897932384626433832795;   const long double EPS = 1e-11;   signed long long n;   int k;   signed long long a[1024000];   int main() {     cout << setiosflags(ios::fixed) << setprecision(10);     cin >> n;     if (n % 3 != 0) {       puts( 0 );       return 0;     }     n /= 3;     k = 0;     for (int i = (1); i <= (int)(10000000); i++) {       signed long long x = i;       x *= x;       if (x > n) break;       if (n % i == 0) {         a[k++] = i;         if (x != n) a[k++] = n / i;       }     }     sort(a, a + k);     int cma = (int)(pow(n / 2.0, 1.0 / 3.0) + 1e-7);     signed long long ans = 0;     a[k] = n + 1;     for (int c = (1); c <= (int)(cma); c++) {       int bma = (int)(pow(n / 2.0 / c, 1.0 / 2.0) + 1e-7);       signed long long b = c;       while (b <= bma) {         if (n % (b + c) != 0) {           int t = upper_bound(a, a + k, n / (b + c)) - a;           if (t == 0) break;           signed long long y = a[t - 1];           signed long long nb = n / y - c;           if (nb < b) nb = b + 1;           b = nb;           continue;         }         signed long long bb = b + c;         signed long long cc = b * (signed long long)c - n / (b + c);         signed long long dd = bb * bb - 4LL * cc;         signed long long z = (int)(sqrt(dd) + 1e-7);         signed long long a = (-bb + z) / 2;         if (a < b) break;         if (z * z != dd) goto l1;         if (a != b && b != c)           ans += 6;         else if (a != b || b != c)           ans += 3;         else           ans++;       l1:;         b++;       }     }     cout << ans << endl;     return 0;   }   