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
34
35
36
37
38
#include <stdio.h>
#include <assert.h>

static int test(size_t n, size_t k)
{
	size_t q = n, r, c = 0;

	while (q) {
		r = q % 10;
		q /= 10;
		c += r * r;
	}

	c *= k;

	return n == c;
}

int main(void)
{
	size_t k, a, b, i, out = 0;

	assert(scanf("%zu %zu %zu", &k, &a, &b) == 3);

	assert(k && b >= a);

	if (a % k) {
		a /= k;
		a++;
		a *= k;
	}

	for (i = a; i <= b; i += k)
		out += test(i, k);

	printf("%zu\n", out);
	return 0;
}