Создайте массив N-длины, имеющий GCD всех его пар, присутствующих в данном 2D-массиве.

Опубликовано: 21 Сентября, 2022

Учитывая двумерный массив arr[][] , состоящий из N*N положительных целых чисел, задача состоит в том, чтобы сгенерировать массив N-длины так, чтобы наибольшие общие делители (GCD) всех возможных пар этого массива присутствовали в массиве arr[] [] .

Примеры:

Input: N = 4, arr[] = {2, 1, 2, 3, 4, 3, 2, 6, 1, 1, 2, 2, 1, 2, 3, 2}
Output: 4, 3, 6, 2
Explanation:
Considering the array A[] as {4, 3, 6, 2}, then the GCD of all possible pairs of this array is given below which is the given array arr[].
{{4, 1, 2, 2},
{1, 3, 3, 1},
{2, 3, 6, 2},
{2, 1, 2, 2}}

Input: N = 1, mat = {100}
Output: 100

Подход: Вышеупомянутая проблема может быть решена с помощью того факта, что НОД самого большого элемента в исходном массиве с самим собой является самым большим в arr[], и после удаления пар НОД с этим элементом можно найти следующий элемент. Выполните следующие шаги, чтобы решить данную проблему:

  • Инициализируйте карту, скажем, M сохраните частоту отрицания элемента массива в карте M .
  • Инициализируйте переменную, скажем, pos как (N – 1) .
  • Теперь для всех элементов массива arr[] найдите максимальный элемент.
  • Пройтись по карте М.
  • Для каждого элемента исходного массива найдите элемент с максимальной частотой и сохраните его в файле ans.
  • Найдите ans[pos] и удалите все GCD от pos+1 до N-1 из ans .
  • Обновите pos как pos-1 .
  • Повторите вышеуказанные шаги, чтобы найти все элементы исходного массива.
  • Наконец, напечатайте ответ .

Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(N 2 LogN)
Вспомогательное пространство: O(N 2 )

РЕКОМЕНДУЕМЫЕ СТАТЬИ