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
41
42
43
44
45
46
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
typedef unsigned long long ull;
ull f(ull n){
	ull result = 0;
	while(n > 0){
		result += (n%10)*(n%10);
		n /= 10;
	}
	return result;
}

ull max(ull a, ull b){
	if(a > b){
		return a;
	}
	return b;
}

ull min(ull a, ull b){
	if(a < b){
		return a;
	}
	return b;
}

ull main2(ull k, ull a, ull b){
	ull n = 0;
	ull start = k*max(ceil(a/k), 1);
	ull end = min(k*10000, k*floor(b/k));
	for(ull i = start ; i <= end ; i+=k){
		if(k*f(i) == i){
			++n;
		}
	}
	return n;
}

int main(){
	ull a = 0, b = 0, k = 0, maxi = 0;
	cin >> k >> a >> b;
	cout << main2(k, a, b) << endl;
	return 0;
}