1a
2d
3c
package acsl.KaprekarRoutine; import java.util.*; import java.io.*; public class KaprekarRoutine { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new FileReader("data/test.in")); PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("data/test.out"))); for(int i = 0; i < 10; i++){ String initialValue = in.readLine(); ArrayList<String> previous = new ArrayList<String>(); previous.add(initialValue); int cycle = 0; String value = initialValue; Boolean done = true; while(done){ String difference = subtract(value); for(int j = 0; j < previous.size(); j++){ if(difference.equals(previous.get(j))||(difference.equals("0"))){ cycle = previous.size() - j+1; done = false; } } previous.add(value); value = difference; } if(value.equals("0")){ System.out.println("ZERO, "+(previous.size()-1)); } else{ if(cycle == 2){ System.out.println("Constant, "+value); } else{ if(cycle > 2){ System.out.println("Cycle, "+cycle); } } } } in.close(); out.close(); } public static String subtract(String value){ ArrayList<String> digits = new ArrayList<String>(); String[] temp = value.split(""); for(int i = 0; i < temp.length; i++){ digits.add(temp[i]); } String smallest = ""; Collections.sort(digits); for(int i = 0; i < temp.length; i++){ smallest = smallest + digits.get(i); } String largest = ""; Collections.reverse(digits); for(int i = 0; i < temp.length; i++){ largest = largest + digits.get(i); } int difference = Integer.parseInt(largest, 16)-Integer.parseInt(smallest, 16); return Integer.toString(difference, 16); } }