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
39
40
#include <stdio.h>

int pow1[10];

int calc_fn(unsigned long long n, unsigned long long t) {
	unsigned long long sum = 0, tmp;

	while(n) {
		tmp = n % 10;
		sum += pow1[tmp];
		n /= 10;
	}

	if (sum == t)
		return 1;

	return 0;
}

int main () {
	unsigned long long k, a, b, n, ret = 0, t;
	int i;

	for (i = 0; i < 10; i++)
		pow1[i] = (i * i);

	scanf("%llu %llu %llu\n", &k, &a, &b);

	for (n = a; n <= b; n++) {
		t = n % k;
		if (!t) {
			if (calc_fn(n, n / k))
				ret++;
		}
	}

	printf("%llu\n", ret);

	return 0;
}