📒 Readme ver 1.0 10.10.2025 16:32
- Показати на екран усі восьмизначні числа, цифри у яких не повторюються.
- Ці числа повинні ділитися на 12 345 без залишку.
- Показати загальну кількість знайдених чисел.
Note
Перебираємо всі восьмизначні числа:
• Мінімальне восьмизначне число: 10 000 000 1
• Максимальне восьмизначне число: 99 999 999 2
public class UniqueDigitsNumbers {
public static void main(String[] args) {
// Лічильник для підрахунку знайдених чисел
int count = 0;
// Дільник, на який повинні ділитися числа без залишку
int divisor = 12345;
for (int number = 10234567; number <= 98765432; number++) {
// Перевіряємо дві умови:
// 1. Число ділиться на 12345 без залишку (number % divisor == 0)
// 2. Всі цифри в числі унікальні (hasUniqueDigits повертає true)
if (number % divisor == 0 && hasUniqueDigits(number)) {
// Виводимо знайдене число на екран
System.out.println(number);
// Збільшуємо лічильник знайдених чисел
count++;
}
}
// Після перевірки всіх чисел виводимо загальну кількість знайдених
System.out.println("\nВсього знайдено чисел: " + count);
}
/**
* Метод перевірки, що всі цифри в числі унікальні (не повторюються)
* @param number - число, що перевіряється
* @return true якщо всі цифри унікальні, false якщо є повтори
*/
public static boolean hasUniqueDigits(int number) {
// Створюємо масив з 10 елементів (для цифр 0-9)
// За замовчуванням всі елементи false
// digits[i] = true означає, що цифра i вже зустрічалася в числі
boolean[] digits = new boolean[10];
// Витягуємо цифри з числа по одній, починаючи з останньої
while (number > 0) {
// Отримуємо останню цифру числа за допомогою залишку від ділення на 10
// Наприклад: 12345 % 10 = 5
int digit = number % 10;
// Перевіряємо, чи зустрічалася ця цифра раніше
if (digits[digit]) {
// Якщо цифра вже зустрічалася (digits[digit] == true),
// значить є повтор, повертаємо false
return false;
}
// Відзначаємо, що цифра digit тепер зустрічалася
digits[digit] = true;
// Видаляємо останню цифру з числа
// Наприклад: 12345 / 10 = 1234
number /= 10;
}
// Якщо пройшли всі цифри і не знайшли повторів, повертаємо true
return true;
}
}
public class UniqueDigitsNumbers {
public static void main(String[] args) {
// Лічильник для підрахунку знайдених чисел
int count = 0;
// Дільник, на який повинні ділитися числа без залишку
int divisor = 12345;
for (int number = 10234567; number <= 98765432; number++) {
// Перевіряємо дві умови:
// 1. Число ділиться на 12345 без залишку (number % divisor == 0)
// 2. Всі цифри в числі унікальні (hasUniqueDigits повертає true)
if (number % divisor == 0 && hasUniqueDigits(number)) {
// Виводимо знайдене число на екран
System.out.println(number);
// Збільшуємо лічильник знайдених чисел
count++;
}
}
// Після перевірки всіх чисел виводимо загальну кількість знайдених
System.out.println("\nВсього знайдено чисел: " + count);
}
/**
* Метод перевірки, що всі цифри в числі унікальні (не повторюються)
* @param number - число, що перевіряється
* @return true якщо всі цифри унікальні, false якщо є повтори
*/
public static boolean hasUniqueDigits(int number) {
// Створюємо масив з 10 елементів (для цифр 0-9)
// За замовчуванням всі елементи false
// digits[i] = true означає, що цифра i вже зустрічалася в числі
boolean[] digits = new boolean[10];
// Витягуємо цифри з числа по одній, починаючи з останньої
while (number > 0) {
// Отримуємо останню цифру числа за допомогою залишку від ділення на 10
// Наприклад: 12345 % 10 = 5
int digit = number % 10;
// Перевіряємо, чи зустрічалася ця цифра раніше
if (digits[digit]) {
// Якщо цифра вже зустрічалася (digits[digit] == true),
// значить є повтор, повертаємо false
return false;
}
// Відзначаємо, що цифра digit тепер зустрічалася
digits[digit] = true;
// Видаляємо останню цифру з числа
// Наприклад: 12345 / 10 = 1234
number /= 10;
}
// Якщо пройшли всі цифри і не знайшли повторів, повертаємо true
return true;
}
}...
97142805
97834125
98031645
98142750
98463720
Всего чисел: 137