- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
package javaapplication2;
import java.util.*;
public class JavaApplication2 {
public static void main(String[] args) {
int temp; byte n;
Scanner in = new Scanner(System.in);
System.out.print("Введите разрядность искомых чисел: "); n = in.nextByte();
if (n < 1 | n > 5) {
System.out.println("Всего чисел: 0");
return;
}
int i = (int)Math.pow(10, (n - 1)); // i - минимальное число. Пр: 1, 10, 100, 1000, 10000
int count = 0;
while ( (int)Math.log10(i*2) + 1 == n) { // Цикл выполняется пока кол-во цифр в числе i равно числу n.
boolean unqie = false;
temp = i;
int[] g = new int[10];
for (int j = 0; j < (n*2); j++) // Цикл выполниться вдвое больше раз, чем разрядность искомых чисел.
{
g[temp % 10]++;
if (g[temp % 10] > 1) {
unqie = true;
break;
}
temp /= 10; // Отбрасываем последнюю проверенную цифру.
if (temp <= 0) { // После того, как проверили первое число на уникальность,
temp = i*2; // проверяем второе, которое в 2 раза больше первого.
}
}
if ( unqie == false) { // Если число прошло проверку на уникальность, выводим его на экран.
count++;
System.out.printf("%s %s \n", i, i*2);
}
i++;
}
System.out.printf("Всего: %s numbers \n", count);
}
}
Моё. Программа выводит те числа, в которых, а также в умноженных на два числах, все цифры уникальные. Только начинаю изучать яву, не бейте, лучше обоссыте.