public class Euler318 {
    static long minimalN(int p, int q, int targetNines) {
        double beta = Math.sqrt(q) - Math.sqrt(p);
        double beta2 = beta * beta;
        double lambda = -Math.log10(beta2);
        double target = (double) targetNines;

        long n = (long) (target / lambda);
        if (n == 0) {
            n = 1;
        }
        while (n * lambda < target - 1e-15) {
            n++;
        }
        while (n > 1 && (n - 1) * lambda >= target - 1e-15) {
            n--;
        }
        return n;
    }

    public static String solve() {
        int maxSum = 2011;
        int targetNines = 2011;
        long total = 0;

        for (int p = 1; p < maxSum; ++p) {
            for (int q = p + 1; p + q <= maxSum; ++q) {
                double beta = Math.sqrt(q) - Math.sqrt(p);
                if (beta >= 1.0) {
                    continue;
                }
                total += minimalN(p, q, targetNines);
            }
        }
        return String.valueOf(total);
    }

    public static void main(String[] args) {
        System.out.println(solve());
    }
}
