1 minute read

<-E 1925> Count Square Sum Triples

// Method 1
class Solution {
public:
    int countTriples(int n) {
       int count = 0;
       for(int i = 1; i <= n; i++) {
            for(int j = 1;j <= n; j++) {
                int sum = i*i + j*j;
                int t = sqrt(sum);

                if(t * t == sum && t <= n)
                    count++;
            }
        }
        return count;
    }
};

// Method 2
class Solution {
public:
    int countTriples(int n) {

        vector<int> squares(n * n + 1, 0);
        for (int i = 1; i <= n; ++i)
            squares[i * i] = 1;

        int res = 0;
        for (int i = 1; i <= n; ++i)
            for (int j = i; i * i + j * j <= n * n; ++j)
                res += squares[i * i + j * j] * 2;
        return res;

    }
};

class Solution {
public:
    int countTriples(int n) {

        vector<int> squares(n * n + 1, 0);
        for (int i = 1; i <= n; ++i)
            squares[i * i] = 1;

        int res = 0;
        for (int i = 1; i <= n; ++i)
            for (int j = i; i * i + j * j <= n * n; ++j)
                res += squares[i * i + j * j] * 2;
        return res;

    }
};