Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Arrays;
- import java.util.HashSet;
- public class glava4zadanie24finish {
- public static void main(String[] args) {
- HashSet<Integer> result = new HashSet<>();
- for (int NUMBER = 1000; NUMBER < 10000; NUMBER++) {
- int[][] i = GenCombinations(SortArr(GetArrayNumber(NUMBER)));
- for (int j = 0; j < i.length; j++) {
- if (i[j][0] * i[j][1] == NUMBER)
- result.add(NUMBER);
- }
- }
- result.forEach(System.out::println);
- }
- static int[] SortArr(int[] arr){
- for (int i = 0; i < arr.length; i++) {
- swap(arr, SearchMinElement(arr, i), i);
- }
- return arr;
- }
- static int[][] GenCombinations(int[] ArrayNubmers) {
- int[][] result = new int[fact(ArrayNubmers.length)-1][2];
- int m = 0;
- int k = 0;
- for (int i = 0; i < fact(ArrayNubmers.length) - 1; i++) {
- for (int j = ArrayNubmers.length - 1; j >= 0; j--) {
- if (j != 0 && ArrayNubmers[j] > ArrayNubmers[j - 1]) {
- m = j - 1;
- k = SearchMinMoreThanElement(ArrayNubmers, j, ArrayNubmers[m]);
- ArrayNubmers = swap(ArrayNubmers, m, k);
- ArrayNubmers = wrap(ArrayNubmers, m);
- result[i][0] = Integer.parseInt(Integer.toString(ArrayNubmers[0]) + Integer.toString(ArrayNubmers[1]));
- result[i][1] = Integer.parseInt(Integer.toString(ArrayNubmers[2]) + Integer.toString(ArrayNubmers[3]));
- break;
- }
- }
- }
- return result;
- }
- public static int fact(int num) {
- return (num == 0) ? 1 : num * fact(num - 1);
- }
- public static int SearchMinElement(int[] arr, int index) {
- int min = index;
- for (int i = index; i <= arr.length - 1; i++) {
- if (arr[min] > arr[i])
- min = i;
- }
- return min;
- }
- public static int SearchMinMoreThanElement(int[] arr, int index, int k) {
- int min = index;
- for (int i = index; i <= arr.length - 1; i++) {
- if ((arr[min] > arr[i]) & (arr[i] > k))
- min = i;
- }
- return min;
- }
- //правее index элементы будут перевернуты в обратном порядке
- static int[] wrap(int[] array, int index) {
- index++;
- int j = index;
- int[] tmp = Arrays.copyOf(array, array.length);
- for (int i = array.length - 1; i >= index; i--) {
- tmp[j] = array[i];
- j++;
- }
- return tmp;
- }
- //метод для перестановки местами двух элементов массива
- static int[] swap(int[] array, int index1, int index2) {
- int tmp = array[index1];
- array[index1] = array[index2];
- array[index2] = tmp;
- return array;
- }
- //Делаем из числа массив чисел "первые два и последние два"
- static int[] GetArrayNumberOneTwo(int number) {
- String tmp = Integer.toString(number);
- int[] result = new int[tmp.length()];
- for (int i = 0; i < tmp.length(); i++) {
- result[i] = tmp.charAt(i) - '0';
- }
- String one = result[0] + "" + result[1];
- String two = result[2] + "" + result[3];
- int oneI = Integer.parseInt(one);
- int twoI = Integer.parseInt(two);
- result = new int[2];
- result[0] = oneI;
- result[1] = twoI;
- return result;
- }
- //Делаем из числа массив чисел
- static int[] GetArrayNumber(int number) {
- String tmp = Integer.toString(number);
- int[] result = new int[tmp.length()];
- for (int i = 0; i < tmp.length(); i++) {
- result[i] = tmp.charAt(i) - '0';
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement