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
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class row{
	public static void main(String[] args) {
		Map<String, BigDecimal> map = new HashMap<String, BigDecimal>();
		map.put("0",new BigDecimal(0));
		map.put("1",new BigDecimal(1));
		map.put("2",new BigDecimal(4));
		map.put("3",new BigDecimal(9));
		map.put("4",new BigDecimal(16));
		map.put("5",new BigDecimal(25));
		map.put("6",new BigDecimal(36));
		map.put("7",new BigDecimal(49));
		map.put("8",new BigDecimal(64));
		map.put("9",new BigDecimal(81));
		Scanner sc = new Scanner(System.in);
		BigDecimal k = sc.nextBigDecimal();
		BigDecimal a = sc.nextBigDecimal();
		BigDecimal b = sc.nextBigDecimal();
		BigDecimal sum = new BigDecimal(0);
		sc.close();
		BigDecimal max = new BigDecimal(10).pow(18);
		
		if ((a.compareTo(BigDecimal.ONE) < 0)  
				|| (a.compareTo(k) < 0) 
				|| (k.compareTo(b) > 0)
				|| (b.compareTo(max) > 0)){
			System.out.println(0);
			return;
		}
		for (BigDecimal t=b.divideToIntegralValue(k).multiply(k);t.compareTo(a)>=0;t=t.subtract(k)){
			String s = t.toPlainString();
			BigDecimal localsum = new BigDecimal(0);
			for (int i=0;i<s.length();i++){
				localsum=localsum.add(map.get(s.substring(i, i+1)));
			}
			if (t.divide(k).compareTo(localsum)==0){
				sum=sum.add(BigDecimal.ONE);
			}
		}
		System.out.println(sum);
	}
}