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
52
53
54
import java.util.*;

public class row
{
	public static void main(String[] args)
	{
		
		//skaner io
		Scanner scan = new Scanner(System.in);
		
		//dane wejsciowe
		long k = scan.nextLong();
		long a = scan.nextLong();
		long b = scan.nextLong();
		
		//minimalna liczba do sprawdzenia
		long minSpr = ((long)(a / k) * k);
		if (minSpr < a) minSpr += k;
		
		//maksymalna liczba do sprawdzenia
		long maxSpr = 1620 * k;
		if ((b < maxSpr) | (maxSpr <= 0)) maxSpr = b;
		
		
		
		
		//pomocnicza tabela z potegami razy k
		long[] potega = new long[10];
		for (int i = 0; i < 10; i++) potega[i] = i * i * k;
		
		
		
		
		//glowna petla sprawdzajaca
		long wynik = 0;
		for(long liczba = minSpr; liczba <= maxSpr; liczba += k)
		{
			//obliczamy sume poteg  razy k
			long liczbaTmp = liczba, suma = 0;
			while (liczbaTmp > 0)
			{
				suma += potega[(byte)(liczbaTmp % 10)];
				liczbaTmp = (long)(liczbaTmp / 10);
			}
			
			//sprawdzamy
			if (suma == liczba) wynik++;
		}
		
		System.out.println(wynik);
		
	}

}