import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;


public class Solution {


    private static final char[] ALPHAPET = "abcdefghijklmnopqrstuvwxyz".
toUpperCase().toCharArray();


    public static void main(String[] args) {


        try (Scanner scanner = new Scanner(new BufferedReader(new 
InputStreamReader(System.in)))) {
            int testCount = scanner.nextInt();
            for (int testNumber = 1; testNumber <= testCount; testNumber++) 
{
                int maxPrime = scanner.nextInt(); // not working for the 
large dataset
                int seqLength = scanner.nextInt();
                int[] seq = new int[seqLength]; // not working for the 
large dataset
                for (int i = 0; i < seqLength; i++) {
                    seq[i] = scanner.nextInt(); // not working for the 
large dataset
                }
                String result = solve(maxPrime, seq);
                System.out.println("Case #" + testNumber + ": " + result);
            }
        }
    }


    static String solve(int maxPrime, int[] seq) {


        HashSet primes = new HashSet();


        int[] valuesExpanded= new int[seq.length + 1];


        BigInteger commonBigInt = BigInteger.valueOf(seq[1]).gcd(BigInteger.
valueOf(seq[0]));
        int number1 = seq[0] / commonBigInt.intValue();
        int common = commonBigInt.intValue();


        primes.add(number1);
        primes.add(common);
        valuesExpanded[0] = number1;
        valuesExpanded[1] = common;


        for (int i = 1; i < seq.length; i++) {
            valuesExpanded[i+1] = seq[i]/common;
            common = valuesExpanded[i+1];
            primes.add(common);
        }


        Integer[] sortedPrimes = new Integer[primes.size()];
        primes.toArray(sortedPrimes);


        Arrays.sort(sortedPrimes);


        Map<Integer, Character> dictionary = new HashMap<>();
        for (int i = 0; i < sortedPrimes.length; i++) {
            dictionary.put(sortedPrimes[i], ALPHAPET[i]);
        }




        char[] decoded = new char[valuesExpanded.length];
        for (int i = 0; i < valuesExpanded.length; i++) {
            decoded[i] = dictionary.get(valuesExpanded[i]);
        }




        return  String.valueOf(decoded);


    }
}

-- 
You received this message because you are subscribed to the Google Groups 
"Google Code Jam" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-code+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-code/fd2131db-c593-4a26-9064-82397f70a52d%40googlegroups.com.

Reply via email to