Guest User

Untitled

a guest
Nov 20th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.88 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Problem3 {
  4.  
  5. public static void main(String[] args) {
  6. Scanner scan = new Scanner(System.in);
  7. int testCases = scan.nextInt();
  8. List<Integer> numbers = new ArrayList<>();
  9.  
  10. for ( int i =1; i<=testCases; ++i) {
  11. numbers.add(scan.nextInt());
  12. }
  13.  
  14. for (Integer number : numbers) {
  15. findPairs(number);
  16. }
  17.  
  18.  
  19.  
  20. }
  21.  
  22. private static void findPairs(Integer number) {
  23.  
  24. HashSet<Pair> pairs = new HashSet<>();
  25.  
  26.  
  27. for(int i=10;i <=number; ++i) {
  28.  
  29. int a = i;
  30. //System.out.println("Trying " + a);
  31. ArrayList<Integer> digitsArray =getDigitsArray(a);
  32. for(int j =0; j< digitsArray.size(); ++j) {
  33. List<List<Integer>> permutations = listPermutations(digitsArray);
  34.  
  35. for(List<Integer> list: permutations) {
  36.  
  37. for (int k =0; k<list.size(); ++k) {
  38.  
  39. ArrayList<Integer> copyArray = new ArrayList<Integer>(list);
  40. copyArray.remove(k);
  41. int b = convertToNumber(copyArray);
  42.  
  43. if(a + b == number && a != b) {
  44. // System.out.println("Found pair for: " + a);
  45. pairs.add(new Pair(a,b));
  46. }
  47.  
  48. }
  49. }
  50.  
  51. }
  52.  
  53. }
  54.  
  55. System.out.println(pairs.size() + " pairs found");
  56.  
  57. for(Pair pair: pairs) {
  58. System.out.println(pair);
  59. }
  60.  
  61. }
  62.  
  63.  
  64.  
  65. private static Integer convertToNumber(ArrayList<Integer> digits) {
  66. Integer number = 0;
  67.  
  68. for (int digit : digits) {
  69. number *= 10;
  70. number += digit;
  71. }
  72.  
  73. //System.out.println("Array is " + digits + "Number is: " + number);
  74. return number;
  75. }
  76.  
  77. public static List<List<Integer>> listPermutations(List<Integer> list) {
  78.  
  79. if (list.size() == 0) {
  80. List<List<Integer>> result = new ArrayList<List<Integer>>();
  81. result.add(new ArrayList<Integer>());
  82. return result;
  83. }
  84.  
  85. List<List<Integer>> returnMe = new ArrayList<List<Integer>>();
  86.  
  87. Integer firstElement = list.remove(0);
  88.  
  89. List<List<Integer>> recursiveReturn = listPermutations(list);
  90. for (List<Integer> li : recursiveReturn) {
  91.  
  92. for (int index = 0; index <= li.size(); index++) {
  93. List<Integer> temp = new ArrayList<Integer>(li);
  94. temp.add(index, firstElement);
  95. returnMe.add(temp);
  96. }
  97.  
  98. }
  99. return returnMe;
  100. }
  101.  
  102.  
  103. private static ArrayList<Integer> getDigitsArray(int number) {
  104.  
  105. int temp = number;
  106. ArrayList<Integer> array = new ArrayList<Integer>();
  107. do{
  108. array.add(temp % 10);
  109. temp /= 10;
  110. } while (temp > 0);
  111.  
  112. return array;
  113. }
  114.  
  115. }
Add Comment
Please, Sign In to add comment