Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.96 KB | None | 0 0
  1. import java.util.Arrays;
  2. import java.util.HashSet;
  3.  
  4. public class glava4zadanie24finish {
  5.     public static void main(String[] args) {
  6.         HashSet<Integer> result = new HashSet<>();
  7.  
  8.        for (int NUMBER = 1000; NUMBER < 10000; NUMBER++) {
  9.             int[][] i = GenCombinations(SortArr(GetArrayNumber(NUMBER)));
  10.             for (int j = 0; j < i.length; j++) {
  11.                 if (i[j][0] * i[j][1] == NUMBER)
  12.                   result.add(NUMBER);
  13.             }
  14.         }
  15.         result.forEach(System.out::println);
  16.     }
  17.  
  18.     static int[] SortArr(int[] arr){
  19.         for (int i = 0; i < arr.length; i++) {
  20.             swap(arr, SearchMinElement(arr, i), i);
  21.         }
  22.         return arr;
  23.     }
  24.  
  25.     static int[][] GenCombinations(int[] ArrayNubmers) {
  26.         int[][] result = new int[fact(ArrayNubmers.length)-1][2];
  27.         int m = 0;
  28.         int k = 0;
  29.  
  30.         for (int i = 0; i < fact(ArrayNubmers.length) - 1; i++) {
  31.             for (int j = ArrayNubmers.length - 1; j >= 0; j--) {
  32.                 if (j != 0 && ArrayNubmers[j] > ArrayNubmers[j - 1]) {
  33.                     m = j - 1;
  34.                     k = SearchMinMoreThanElement(ArrayNubmers, j, ArrayNubmers[m]);
  35.                     ArrayNubmers = swap(ArrayNubmers, m, k);
  36.                     ArrayNubmers = wrap(ArrayNubmers, m);
  37.                     result[i][0] = Integer.parseInt(Integer.toString(ArrayNubmers[0]) + Integer.toString(ArrayNubmers[1]));
  38.                     result[i][1] = Integer.parseInt(Integer.toString(ArrayNubmers[2]) + Integer.toString(ArrayNubmers[3]));
  39.                     break;
  40.                 }
  41.             }
  42.         }
  43.         return result;
  44.     }
  45.  
  46.     public static int fact(int num) {
  47.         return (num == 0) ? 1 : num * fact(num - 1);
  48.     }
  49.  
  50.     public static int SearchMinElement(int[] arr, int index) {
  51.         int min = index;
  52.         for (int i = index; i <= arr.length - 1; i++) {
  53.             if (arr[min] > arr[i])
  54.                 min = i;
  55.         }
  56.         return min;
  57.     }
  58.  
  59.     public static int SearchMinMoreThanElement(int[] arr, int index, int k) {
  60.         int min = index;
  61.         for (int i = index; i <= arr.length - 1; i++) {
  62.             if ((arr[min] > arr[i]) & (arr[i] > k))
  63.                 min = i;
  64.         }
  65.         return min;
  66.     }
  67.  
  68.     //правее index элементы будут перевернуты в обратном порядке
  69.     static int[] wrap(int[] array, int index) {
  70.         index++;
  71.         int j = index;
  72.         int[] tmp = Arrays.copyOf(array, array.length);
  73.  
  74.         for (int i = array.length - 1; i >= index; i--) {
  75.             tmp[j] = array[i];
  76.             j++;
  77.         }
  78.  
  79.         return tmp;
  80.     }
  81.  
  82.     //метод для перестановки местами двух элементов массива
  83.     static int[] swap(int[] array, int index1, int index2) {
  84.         int tmp = array[index1];
  85.         array[index1] = array[index2];
  86.         array[index2] = tmp;
  87.         return array;
  88.     }
  89.  
  90.     //Делаем из числа массив чисел "первые два и последние два"
  91.     static int[] GetArrayNumberOneTwo(int number) {
  92.         String tmp = Integer.toString(number);
  93.         int[] result = new int[tmp.length()];
  94.         for (int i = 0; i < tmp.length(); i++) {
  95.             result[i] = tmp.charAt(i) - '0';
  96.         }
  97.         String one = result[0] + "" + result[1];
  98.         String two = result[2] + "" + result[3];
  99.         int oneI = Integer.parseInt(one);
  100.         int twoI = Integer.parseInt(two);
  101.  
  102.         result = new int[2];
  103.         result[0] = oneI;
  104.         result[1] = twoI;
  105.         return result;
  106.     }
  107.  
  108.     //Делаем из числа массив чисел
  109.     static int[] GetArrayNumber(int number) {
  110.         String tmp = Integer.toString(number);
  111.         int[] result = new int[tmp.length()];
  112.         for (int i = 0; i < tmp.length(); i++) {
  113.             result[i] = tmp.charAt(i) - '0';
  114.         }
  115.         return result;
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement