Size: a a a

2021 May 29

MB

Mikail Bagishov in pro.algorithms
А какие простые ты проверял?
источник

А

Анвар in pro.algorithms
Ну до sqrt(A[i])
источник

А

Анвар in pro.algorithms
А если остается число
источник

А

Анвар in pro.algorithms
То +1 простое число само число оставшеесся
источник

MB

Mikail Bagishov in pro.algorithms
Ну как минимум надо поставить отсечение, что суммарная степень простого должна быть хотя бы N (иначе оно точно войдет в ответ со степенью 0).

Это по идее гарантирует, что общий объем работы не превысит суммарную длину разложение на простые, а она небольшая.
источник

MB

Mikail Bagishov in pro.algorithms
Еще, возможно, надо поускорять факторизацию, 10^5 * sqrt(10^6) это довольно много
источник

А

Анвар in pro.algorithms
Давайте чутка проясним, правильно ли я вообще делаю и думаю
Я создал изначально массив с праймами до sqrt(1e6) так как ну это максимальное значение элемента массива.
Потом я создал двумерный массив для каждого элемента и в Matr[i][N] я буду хранить сколько простых чисел в числе A[i] Nого разряда N здесь порядковое число простых чисел.
После этого я иду с макс N и пытаюсь сделать так чтобы общая сумма в массиве Matr[i] равнялась размеру массива
источник

А

Анвар in pro.algorithms
Это правильная мысль вообще?
источник

А

Анвар in pro.algorithms
Кстати, да
источник

А

Анвар in pro.algorithms
Из за этого я и получил tl
источник

MB

Mikail Bagishov in pro.algorithms
Двумерные массивы меня смущают. Они на самом деле будут очень разреженными, то есть ты делаешь много лишней рабоиы

Я предлагаю по-другому писать.

1. Факторизовать все числа.

2. В массиве cnt для каждого простого посчитать его суммарную степень.

3. Далее, если cnt[p] >= n, то обработать его за O(n)
источник

А

Анвар in pro.algorithms
А в каком виде хранить факторизацию чисел
источник

А

Анвар in pro.algorithms
просто в массиве cnt?
источник

А

Анвар in pro.algorithms
Типа if (A[j]%prime[i] ==0) cnt[i]++;
источник

MB

Mikail Bagishov in pro.algorithms
Ну например, ты можешь сначала заранее вычислить все простые до 10^3, а потом идти только по ним при факторизации, так ты ускоришь ее  в несколько раз.
источник

MB

Mikail Bagishov in pro.algorithms
Нет, он опять же будет очень разреженным (простых до 1е6 довольно много, порядка 1е5, а не-нулей будет штук 15 от силы). Лучше в хэш-таблице.
источник

А

Анвар in pro.algorithms
Хорошо
источник

CD

Constantine Drozdov in pro.algorithms
если числа до 1e6, можно заранее факторизацию всех чисел прекалькнуть
источник

CD

Constantine Drozdov in pro.algorithms
в два фора
источник

CD

Constantine Drozdov in pro.algorithms
там кажется самое простое
maxprime[i] = наибольший простой делитель i
и дальше
for (int i = 2; i <= LIMIT; ++i)
 if (maxprime[i] == 0)
   for (int j = i + i; j <= LIMIT; j += i)
     maxprime[j] = i;
сорт решета
источник