func_code_string: #include <bits/stdc++.h>   using namespace std;   int T;   double pi = acos(-1.0);   vector<long long> v;   long long factorial(long long x) {     long long total = 1;     for (int i = 2; i <= x; i++) total *= i;     return total;   }   bool isprime(long long x) {     vector<bool> prime(x + 1, 1);     prime[0] = prime[1] = 0;     for (long long i = 2; i * i <= x; i++)       if (prime[i])         for (long long j = i * i; j <= x; j += i) prime[j] = 0;     return prime[x];   }   long long gcd(long long a, long long b) {     if (b == 0)       return a;     else       return gcd(b, a % b);   }   long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }   long long temp = 1;   long long fastpow(long long base, long long exponent) {     if (exponent == 0) return 1;     if (exponent == 1) return (temp * base);     if (exponent % 2 == 0)       return fastpow(base * base, exponent / 2);     else {       temp *= base;       fastpow(base * base, exponent / 2);     }   }   void fill(long long f) {     v.clear();     long long x;     for (long long i = 0; i < f; i++) {       cin >> x;       v.push_back(x);     }   }   void printv() {     int size = v.size() - 1;     for (int i = 0; i <= size; i++) {       cout << v[i] <<    ;     }     cout << endl;   }   bool is = 0;   long long f(long long n) {     long long num = n;     long long Max = 0, Min = 9;     while (n) {       long long dig = n % 10;       if (dig == 0) {         is = 1;         return num;       }       Max = max(Max, dig);       Min = min(Min, dig);       n /= 10;     }     return Max * Min + num;   }   void solve() {     int n, m;     cin >> n >> m;     int cn = 0;     for (int a = 0; a <= 1000; a++)       for (int b = 0; b <= 1000; b++)         if (a * a + b == n && b * b + a == m) {           cn++;         }     cout << cn << endl;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     { solve(); }     return 0;   }   