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); } }
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); } } |