Skip to content

Soluvent/UniqueDivisors-Module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

📒 Readme ver 1.0 10.10.2025 16:32

Fallback image description

Модульна робота №1

ReadMe IntelliJ IDEA Java Version: 1.0

📝 Завдання

  • Показати на екран усі восьмизначні числа, цифри у яких не повторюються.
  • Ці числа повинні ділитися на 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;
    }
}

🚀 Запуск та приклад виводу

...
97142805
97834125
98031645
98142750
98463720

Всего чисел: 137

Footnotes

  1. Але оскільки цифри не повинні повторюватися: Мінімальне число з унікальними цифрами: 10 234 567

  2. Але оскільки цифри не повинні повторюватися: Максимальне число з унікальними цифрами: 98 765 432

About

Модульна робота

Topics

Resources

Stars

Watchers

Forks

Languages