Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/54: Рейтинг темы: голосов - 54, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 4

Найти число, в котором количество различных цифр минимально. Если таких чисел несколько, найти первое из них

14.02.2020, 00:31. Показов 10828. Ответов 16
Метки java (Все метки)

Студворк — интернет-сервис помощи студентам
Памагити)

Уже который день бьюсь над задачкой.

Задача. Ввести n чисел с консоли. Найти число, в котором количество различных цифр минимально. Если таких чисел несколько, найти первое из них

Java
1
2
3
4
5
6
7
8
 public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Please enter array size (how many number we are going to analyze");
        int N = sc.nextInt();
        long [] arr = new long[N];
        System.out.println("Enter " + N + " random numbers");
        for (int i = 0; i < arr.length; i++)
            arr[i] = sc.nextInt();
- Далее числа нужно преобразовать в строки
как я поняла должно быть 2 цикла, один, который будет проходить по символам строки , второй по элементам массива.
в каждой строке нужно подсчитать количество различный десятичных цифр и, соответственно, сравнить элементы массива
+ должно быть 2 переменные
1. количество различный десятичных цифр
2. само число

Кажись поняла алгоритм, но как это в коде описать - не понимаю.

Java изучаю 2 месяца, буду благодарна за любую подсказку.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2020, 00:31
Ответы с готовыми решениями:

Найти число, состоящее только из различных цифр. Если таких чисел несколько, найти первое из них
Ввести n чисел с консоли. Найти число, состоящее только из различных цифр. Если таких чисел несколько, найти первое из них.

В целочисленном массиве найти число, повторяющееся максимальное количество раз. Если таких чисел несколько, то одно из них.
В целочисленном массиве найти число, повторяющееся максимальное количество раз. Если таких чисел несколько, то одно из них.

В массиве целых чисел с количеством элементов n найти наиболее встречающееся число. Если таких чисел несколько, то определить наименьший из них
В массиве целых чисел с количеством элементов n найти наиболее встречающееся число. Если таких чисел несколько, то определить наименьший из...

16
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
14.02.2020, 01:10
Текущее число= -1; текущее минимальное кол-во цифр=999
Берешь первое число
СЧитаешь количество различных цифр
Если меньше текущего, то текущее число=первое число, текущее мин количество=найденное значение
Берешь второе число и т.д.
1
5 / 3 / 2
Регистрация: 21.04.2019
Сообщений: 16
14.02.2020, 02:20
Простыми словами сделай метод который принимает число, делает из его стринг и посимвольно вычисляет цифры.
Каждую цифру вносит в новый массив и сортирует его. Исходя из этого узнаёшь каких чисел в массиве больше всего и сравниваешь это с его размером. Возвращаешь коэффициент (макс. количество одинаковых цифр / количество цифр числа).
Потом сравниваешь коэффициенты используя этот метод в цикле и вуаля. Удачи!
1
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
14.02.2020, 08:31
Oxez, не надо никаких Сирину и массивов
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.02.2020, 09:13
Каждое число в цикле, остатки от деления на 10 складываешь в сет и возвращаешь его длину. Все.
1
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 4
14.02.2020, 10:57  [ТС]
делим на 10 и получаем самый младший десятичный разряд , потом целочисленно делим на 10 чтоб его отбросить и так пока число не обнулится - правильно понимаю?
Java
1
2
3
4
while (d != 0) {
digit = d % 10;
d /= 10;
}
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.02.2020, 11:02
Именно!
0
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 4
14.02.2020, 11:30  [ТС]
не совсем поняла пункт с "складываешь в сет " имеется в виду arr[10]?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
14.02.2020, 17:32
ClaireS, вот метод, возвращающий количество разных цифр числа
Java
1
2
3
4
5
6
7
8
private static int diffNum(int x){
        HashSet<Integer> nums = new HashSet<>();
        while (x>0){
            nums.add(x%10);
            x/=10;
        }
        return nums.size();
    }
Добавлено через 14 минут
Да, аргумент лучше на long поменять

Добавлено через 4 часа 56 минут
Java
1
2
3
4
5
6
7
8
9
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
package ru.ismoke;
 
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
 
public class Cyber {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print("Array dimension: ");
        int[] arr = new int[scan.nextInt()];
 
        for (int i = 0; i < arr.length; i++) {
            System.out.printf("Elem %d: ", i);
            arr[i] = scan.nextInt();
        }
        System.out.println("\n" + Arrays.toString(arr));
        foo(arr);
    }
 
    private static void foo(int[] arr) {
        int min = diffNum(arr[0]);
        int minElem = arr[0];
 
        for (int i = 1; i < arr.length; i++) {
            if (diffNum(arr[i]) < min) {
                min = diffNum(arr[i]);
                minElem = arr[i];
            }
        }
        System.out.printf("Elem: %d", minElem);
    }
 
    private static int diffNum(int x) {
        HashSet<Integer> nums = new HashSet<>();
        while (x > 0) {
            nums.add(x % 10);
            x /= 10;
        }
        return nums.size();
    }
}
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
15.02.2020, 19:51
Без "тяжелой артиллерии":

Java
1
2
3
4
5
6
7
8
9
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
public class Main
{
    public static int numDifDig(int n) // подсчет числа различных цифр
    {
        int [] d = {0,0,0,0,0,0,0,0,0,0};
        int i,return;
        if (n==0) return 1;
        while(n>0)
        {
            i=n%10;
            d[i]++;
            n=n/10;
        }
        r=0;
        for (i=0; i<10; i++) if (d[i] > 0) r++;
        return r;
    }
    public static void main(String[] args) {
        int [] arr = {12,12323,555,19853}; // Исходный массив
        int i,d,m,k;
        m=numDifDig(arr[0]);
        d=arr[0];
        for (i=1; i<arr.length; i++)
        {
            k=numDifDig(arr[i]);
            if (k<m)
            {
                m=k;
                d=arr[i];
            }
        }
        System.out.println(d);
    }
}
1
0 / 0 / 0
Регистрация: 12.02.2020
Сообщений: 4
17.02.2020, 17:26  [ТС]
не совсем поняла что есть
Java
1
2
3
 r=0;
        for (i=0; i<10; i++) if (d[i] > 0) r++;
        return r;
объясните пожалуйста
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
17.02.2020, 18:43
Цитата Сообщение от ClaireS Посмотреть сообщение
не совсем поняла что есть
- считаем сколько разных цифр в исходном числе
1
0 / 0 / 0
Регистрация: 30.10.2020
Сообщений: 3
30.10.2020, 22:33
Как вариант решения задачи!
Java
1
2
3
4
5
6
7
8
9
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class Program {
    public static void main(String[] args) {
        int valueWithMinimumCountDifferentDigits = getValueInWhichNumberOfDistinctDigitsIsMinimal(array);
        System.out.println("The value in which the number of distinct digits is minimal is: " + valueWithMinimumCountDifferentDigits);
    }
 
    private static int getValueInWhichNumberOfDistinctDigitsIsMinimal(int[] array) {
        int indexOfArrayElement = 0;
        int valueWithMinimumCountDifferentDigits = array[indexOfArrayElement];
        int minimumCountDifferentDigits = getAbsoluteValueOfNumber(array[indexOfArrayElement]);
        for (int i = 0; i < array.length; i++) {
            int countDifferentDigits = 0;
            int[] interimArray = getArray(array[i]);
            for (int element : interimArray) {
                if (element > 0) {
                    countDifferentDigits++;
                }
            }
            if (countDifferentDigits < minimumCountDifferentDigits) {
                minimumCountDifferentDigits = countDifferentDigits;
                indexOfArrayElement = i;
            }
        }
        valueWithMinimumCountDifferentDigits = array[indexOfArrayElement];
        return valueWithMinimumCountDifferentDigits;
    }
 
    // Метод возвращает массив, состоящий из 10 элементов. Элементу массива присваивается значение равное 1, если символ аргумента соответствует условию.
    private static int[] getArray(int element) {
        int[] array = new int[10];
        char[] chars = Integer.toString(Math.abs(element)).toCharArray();
        for (char letter : chars) {
            switch (letter) {
                case '0':
                    array[0] = 1;
                    break;
                case '1':
                    array[1] = 1;
                    break;
                case '2':
                    array[2] = 1;
                    break;
                case '3':
                    array[3] = 1;
                    break;
                case '4':
                    array[4] = 1;
                    break;
                case '5':
                    array[5] = 1;
                    break;
                case '6':
                    array[6] = 1;
                    break;
                case '7':
                    array[7] = 1;
                    break;
                case '8':
                    array[8] = 1;
                    break;
                case '9':
                    array[9] = 1;
                    break;
            }
        }
        return array;
    }
}
https://github.com/vipash27/ep... nal-task-1
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
30.10.2020, 23:03
vipash27,
Java
1
2
3
4
5
6
7
8
private static int[] getArray(int element) {
        int[] array = new int[10];
        while (element > 0) {
            array[element % 10] = 1;
            element /= 10;
        }
        return array;
    }
Не?
0
0 / 0 / 0
Регистрация: 30.10.2020
Сообщений: 3
31.10.2020, 09:34
iSmokeJC, да, мессир, так гораздо лучше! А если element < 0?
Как вариант!
Java
1
2
3
4
5
6
7
8
9
private static int[] getArray(int element) {
        int[] array = new int[10];
        int absoluteValueOfNumber = Math.abs(element);
        while (absoluteValueOfNumber > 0) {
            array[absoluteValueOfNumber % 10] = 1;
            absoluteValueOfNumber /= 10;
        }
        return array;
    }
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
31.10.2020, 09:39
vipash27, Название: respekt.jpg
Просмотров: 160

Размер: 15.7 Кб
0
0 / 0 / 0
Регистрация: 22.10.2022
Сообщений: 1
22.10.2022, 23:16
А можете, пожалуйста, объяснить откуда в 10 строчке взялась функция
getAbsoluteValueOfNumber(array[indexOfArrayElement]);
? ":Р

Добавлено через 7 минут
Скажите, пожалуйста, откуда взялась эта функция
Цитата Сообщение от vipash27 Посмотреть сообщение
int minimumCountDifferentDigits = getAbsoluteValueOfNumber(array[indexOfArrayElement]);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.10.2022, 23:16
Помогаю со студенческими работами здесь

Найти слово, в котором число различных символов минимально
Добрый вечер! Помогите, пожалуйста. Ввести n слов с консоли. Найти слово, в котором число различных символов минимально. Если таких...

Найти слово, в котором число различных символов минимально
Помогите пожалуйста. Ввести n строк с консоли . Найти слово,в котором число различных символов минимально.Если таких слов несколько, найти...

Найти слово, в котором число различных символов минимально
длина входной строки не превосходит 300 символов, она вводится с консоли. Необходимо использовать только тип char *, работать с классом ...

Найти элемент массива ближайший к заданному числу. Если таких чисел несколько, вывести наименьшее из них
Если с основным условием я справился, то с уточнением не могу. Вышло это: #include &lt;iostream&gt; #include...

Ввести n слов с консоли. Найти слово, в котором число различных символов минимально
Помогите плз с заданием, не могу понять как сделать. Ввести n слов с консоли. Найти слово, в котором число различных символов минимально....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru