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
#include <iostream>
#include <vector>
#include <map>

unsigned f(const unsigned long long);

int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(NULL);
  unsigned long long k, a, b, answer = 0;
  std::cin >> k >> a >> b;
  for(unsigned long long n = k, t = 0; t < 18*81 && n <= b; ++t, n += k) {
    if(n < a) {
      continue;
     }
    if(k * f(n) == n) {
      answer += 1;
     }
   }
  std::cout << answer << '\n';
 }

unsigned square(const unsigned n) {
  return n*n;
 }

unsigned f(const unsigned long long n) {
  if(n == 0)
   return 0;
  return square(n%10) + f(n/10);
 }