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 <iostream>
using ull = unsigned long long;

ull f(ull _n)
{
	ull result = 0;
	while (_n != 0) {
		ull last = _n % 10;
		result += last * last;
		_n /= 10;
	}
	return result;
}

int main()
{
	const ull limit = 18 * 81;

	ull k, a, b, r = 0;
	std::cin >> k >> a >> b;

	ull lb = a / k;
	ull ub = b / k;
	if (lb == 0) {
		lb = 1;
	} else if (lb * k < a) {
		++lb;
	}
	if (ub > limit) {
		ub = limit;
	}

	for (ull i = lb; i <= ub; ++i) {
		if (f(k * i) == i) {
			++r;
		}
	}
	std::cout << r << std::endl;
	return 0;
}