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

typedef unsigned long long int ULL;

bool satisfies(ULL n, int toBeEqual) {
	int sum = 0, currDigit; 
	while (n > 0 && sum <= toBeEqual) {
		currDigit = n%10;
		sum += currDigit*currDigit;
		n /= 10;
	}

	return sum == toBeEqual;
}

int main(int argc, char const *argv[])
{
	ULL k, a, b;
	scanf("%llu%llu%llu", &k, &a, &b);

	ULL first = a;
	if (a%k != 0) {
		first = (a/k + 1) * k;
	}

	ULL counter = 0;

	ULL n;
	for (n = first; n <= b; n = n+k) {
		if (satisfies(n, n/k)) {
			// printf("%llu\n", n);
			++counter;
		}
	}

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

	return 0;
}