Головоломка Monk и Divisor Hackerearth (вычисление количества элементов в массиве, делимого на конкретные числа) - PullRequest
0 голосов
/ 26 августа 2018

Итак, я решил эту проблему и решил ее с помощью% операции, но это отнимает много времени, и мое решение было принято только частично.Эффективное по времени решение - это это , которое я не мог понять.Точнее, есть конкретная часть решения, которую я не мог понять.Я суммирую эту часть здесь, которая выглядит следующим образом:

Пусть f (x) = Число целых чисел в массиве, делимое на X. Чтобы выяснить это, мы можем использовать тот факт, что все элементы вмассив и все значения P и Q меньше или равны 2 * 10 ^ 5.Таким образом, мы можем вычислить для всех целых чисел i (1 <= i <= 2 * 10 ^ 5) количество целых чисел в массиве, кратное i, используя следующее сито </p>

for i = 1 to 200000
    j = i
    while j <= 200000
        f[i] = f[i] + frequency[j]
        j = j + i

i-й элемент«частота» содержит частоту i в данном массиве.

...