public final class dwite200602p5 extends DwiteSolution { public static void main(String[] args) { new dwite200602p5().run("DATA51.txt", "OUT51.txt"); } private static boolean[] isPrime = DwiteAlgorithm.sievePrimes(1000000); protected void runOnce() { // Read input io.tokenizeLine(); int start = io.readIntToken(); int end = io.readIntToken(); // Compute int palin = 0; for (int i = start; i <= end; i++) { if (isPrime[i] && isPalindrome(i)) palin++; } // Write output io.println(palin); } private static boolean isPalindrome(int x) { String s = Integer.toString(x); return new StringBuilder(s).reverse().toString().equals(s); } }
protected void runOnce() { final int WIDTH = 10; final int HEIGHT = 10; // Read map and pad char[][] map = DwiteAlgorithm.newCharGrid(HEIGHT + 2, WIDTH + 2, '.'); for (int i = 0; i < HEIGHT; i++) { String line = io.readLine(); for (int j = 0; j < WIDTH; j++) map[i + 1][j + 1] = line.charAt(j); } io.readLine(); // Discard line of hyphens // Initialize distances int[][] distance = new int[HEIGHT + 2][WIDTH + 2]; for (int i = 0; i < HEIGHT + 2; i++) { for (int j = 0; j < WIDTH + 2; j++) { switch (map[i][j]) { case '.': distance[i][j] = 999; break; case 'T': distance[i][j] = 999; break; case 'F': distance[i][j] = 0; break; default: throw new IllegalArgumentException(); } } } // Compute all minimum distances (Bellman-Ford) for (int i = 0; i < WIDTH * HEIGHT; i++) { for (int j = 0; j < HEIGHT; j++) { for (int k = 0; k < WIDTH; k++) { if (map[j + 1][k + 1] == 'T') { int d = distance[j + 1][k + 1]; d = Math.min(distance[j + 1][k + 0] + 1, d); d = Math.min(distance[j + 1][k + 2] + 1, d); d = Math.min(distance[j + 0][k + 1] + 1, d); d = Math.min(distance[j + 2][k + 1] + 1, d); distance[j + 1][k + 1] = d; } } } } // Find maximum distance int max = 0; for (int i = 0; i < HEIGHT; i++) { for (int j = 0; j < WIDTH; j++) { if (map[i + 1][j + 1] == 'T') max = Math.max(distance[i + 1][j + 1], max); } } if (max != 999) io.println(max); else io.println(-1); }
protected void runOnce() { int[] digits = DwiteAlgorithm.toDigits(io.readLine()); if (isLuhnValid(digits)) io.println("VALID"); else { // Try all values for the last digit for (int i = 0; i < 10; i++) { digits[digits.length - 1] = i; if (isLuhnValid(digits)) { // Guaranteed to execute before the loop ends io.printf("INVALID %d%n", digits[digits.length - 1]); break; } } } }