Friday, 10 February 2012

Codechef -> Practice -> Easy -> PrimePalindromes



Solution :



import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;

/**
 *
 * @author XCoder
 */
class PrimePalindromes {

    private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    private static PrintWriter pw = new PrintWriter(System.out);

    public static int readIntLine() throws IOException {
        return Integer.parseInt(br.readLine());
    }
    static int primes[] = {1,2, 3, 5, 7, 11, 101, 131, 151, 181, 191, 313, 353, 373, 383, 727, 757, 787, 797, 919, 929, 10301, 10501, 10601, 11311, 11411, 12421, 12721, 12821, 13331, 13831, 13931, 14341, 14741, 15451, 15551, 16061, 16361, 16561, 16661, 17471, 17971, 18181, 18481, 19391, 19891, 19991, 30103, 30203, 30403, 30703, 30803, 31013, 31513, 32323, 32423, 33533, 34543, 34843, 35053, 35153, 35353, 35753, 36263, 36563, 37273, 37573, 38083, 38183, 38783, 39293, 70207, 70507, 70607, 71317, 71917, 72227, 72727, 73037, 73237, 73637, 74047, 74747, 75557, 76367, 76667, 77377, 77477, 77977, 78487, 78787, 78887, 79397, 79697, 79997, 90709, 91019, 93139, 93239, 93739, 94049, 94349, 94649, 94849, 94949, 95959, 96269, 96469, 96769, 97379, 97579, 97879, 98389, 98689,1003001};

    public static void main(String[] args) throws IOException {
        int number = readIntLine();
        int i = 0;
        for (i = 0; i < primes.length; i++) {
            if (number < primes[i]) {
                break;
            }
        }
        if (i > 0) {
            i--;
        }
        if (primes[i] == number) {
            pw.println(number);
        } else {
            pw.println(primes[i + 1]);
        }
        pw.flush();
        pw.close();
    }

    public static int BinarySearch(int p, int q, int search, int arr[]) {
        int mid = (p + q) / 2;
        while (p != q && arr[mid] != search) {
            mid = (p + q) / 2;
            if (search > arr[mid]) {
                p = mid + 1;
            } else {
                q = mid;
            }
        }
        return mid + 1; //returning index where element found/available if present
    }
}

No comments:

Post a Comment