1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cinttypes>

#define DEBUG(x) std::cerr << #x " ---> " << (x) << "; ";
#define DEBUGLN(x) DEBUG(x) std::cerr << std::endl;

int sumOfSquaresOfDigits(int64_t num) {
    int64_t retval = 0;
    int64_t rem = 0;
    while (num > 0) {
        rem = num % 10;
        retval += rem * rem;
        num = num / 10;
    }
    return int(retval);
}

int main() {
    std::cout.sync_with_stdio(false);
    int64_t k, a, b;
    int retval = 0;
    std::cin >> k >> a >> b;
    DEBUG(k); DEBUG(a); DEBUGLN(b);
    int64_t minBound = (a + k - 1) / k * k;
    int64_t maxBound = std::min(b, k * 18 * 9 * 9);
    for (int64_t i = minBound; i <= maxBound; i += k) {
        if (k * sumOfSquaresOfDigits(i) == i) {
            DEBUG(i);
            ++retval;
        }
    }
    std::cout << retval;
}