Головоломка Monk и Divisor Hackerearth (вычисление количества элементов в массиве, делимого на конкретные числа)
Я решил эту проблему и решил ее с помощью% операции, но это отнимает много времени, и мое решение было принято только частично. Эффективное по времени решение - это то, чего я не мог понять. Точнее, есть конкретная часть решения, которую я не мог понять. Я суммирую эту часть здесь, которая продолжается следующим образом
Пусть f(x) = число целых чисел в массиве, делимое на X. Чтобы выяснить это, мы можем использовать тот факт, что все элементы в массиве и все значения P и Q меньше или равны 2*10^5. Таким образом, мы можем вычислить для всех целых чисел i (1 <= i <= 2*10^5) число целых чисел в массиве, кратное i, используя следующее сито
for i = 1 to 200000
j = i
while j <= 200000
f[i] = f[i] + frequency[j]
j = j + i
i-й элемент "частоты" содержит частоту i в данном массиве.