• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Удаление И Сортировка Чисел В Массиве

  • Автор темы akisha
  • Дата начала
A

akisha

Есть задачка:
Даны N положительных целых чисел, которые не делятся ни на какие простые числа, кроме 2 и 3. Требуется выкинуть минимально возможное количество чисел так, чтобы из любых двух оставшихся одно делилось на другое.
Никак не могу понять алгоритм действий(
Как можно решить эту задачку?
 
G

guinevra

Можно попробовать так: найти минимальный элемент, найти все элементы массива, на него делящиеся (не считая сам элемент, но учитывая равные ему), назначить "потомками". Далее повторять эту процедуру для "потомков". Очевидно, процесс закончится. Получится дерево, из которого нам надо оставить самую длинную ветвь.
 
W

Whatka

guinevra неплохая идея,но процесс не закончится,что возможно неочевидно)
пример: 2 3 4 9 27

то есть,если доработать,то: отсортировать массив,завести массив того же размера типа bool (все значения изначально = false)
проделать,то же,что говорилось раньше,помечая использованные хотя бы один раз числа как true
создать новое дерево для элемента с индексом,равным индексу числа в булевом массиве со значением false.


и мой вариант (тоже с деревом):
отсортировать массив и(начиная с меньшего) строить бинарное дерево по правилу:
если элемент делится на вершину,то в правое поддерево,если нет в левое,если нет
соответствующего поддерева -создать.
Найти самую глубокое правое поддерево.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!