func_code_string: #include <bits/stdc++.h>   #pragma comment(linker,  /STACK:10000000 )   using namespace std;   template <class T>   T inline sqr(T x) {     return x * x;   }   const double pi = 3.1415926535897932384626433832795;   const double eps = 1e-8;   long long ans = 0;   bool f(long long x, long long y, long long n) {     long long s = x + y;     long long ch = -n / (x * y) + x + y;     long long zn = 2;     long long w = ch / zn;     if (ch == w * zn)       if (1 <= w && w < x && w < y) {         long long k1 = x - w, k2 = y - w, k3 = w;         if (k3 < k2) return true;         if (k1 == k2) {           if (k2 == k3)             ans++;           else             ans += 3;         } else {           if (k2 == k3)             ans += 3;           else             ans += 6;         }       }     return false;   }   int main() {     long long n;     cin >> n;     if (n % 3 != 0) {       cout <<  0 ;       return 0;     }     vector<long long> a, b;     for (long long i = 1; i * i <= n; i++)       if (n % i == 0) {         if (i > 0) a.push_back(i);         if (i * i != n) b.push_back(n / i);       }     for (int i = b.size() - 1; i >= 0; i--) a.push_back(b[i]);     cerr << a.size() << endl;     n /= 3;     int Q = 0;     for (int i = 0; i < a.size(); i++)       if (n % a[i] == 0) {         long long d = n / a[i];         int x = lower_bound(a.begin(), a.end(), d) - a.begin();         for (int j = x; j >= i; j--)           if (d % a[j] == 0) {             if (f(a[i], a[j], n)) break;           }       }     cout << ans;     return 0;   }   