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
47
48
49
50
51
program row;

var
  a,b : Qword;
  k : Qword;

  d : Qword;
  c : byte;
  f : word;
  r : Qword;

  m : Qword;

  i,j1,j2 : word;
  j : word;
  a1,b1 : Qword;
  n : word;

begin
  readln(k,a,b);

  j:=1;
  b1:=b div 10;
  while b1>0 do
  begin
    j:=j+1;
    b1:=b1 div 10
  end;
  n:=81*j;
  b1:=b div k;
  if b1<n then j2:=b1
    else j2:=n;
  a1:=a div k;
  if (a mod k)>0 then a1:=a1+1;
  if a1 <=j2 then
  begin
  j1:=a1;
  for j:=j1 to j2 do
  begin
    f:=0; r:=k*j;
    repeat
      c:=r mod 10;
      f:=f+c*c;
      r:=r div 10
    until r=0;
    if f=j then m:=m+1;
  end;
  end;

  writeln(m);
end.