Advertisement
ivnikkk

Untitled

Jul 18th, 2022
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. Идея решения задачи:
  2. 1. Предподсчитаем кол во простых чисел на преффиксах от [0, 10^6]( это можно сделать предварительно построив решето Эратосфена за O(n*loglogn) )
  3. 2. Утверждение : кол - во кратных числу p на преффиксе N равно N/p (где / - деление с округлением вниз)
  4. 3. Тогда чтобы узнать кол во чисел кратных хотя бы одному числу из множества k достаточно воспользоваться формулой *включений-исключений и найти объединение множеств, т е выбирая некоторое подмножество множества K мы собираем составное число из этих простых чисел (для перебора подмножеств воспользуемся перебором всех масок длиной |k| )
  5. * формула включений - исключений : A(i) - итое множество набора объединение которого нам нужно найти,
  6. (| - объединение, & - пересечение, | | - раземер )
  7. | |(A) | = SUM_1_n |A(i)| - SUM_i_j (| A(i) & A(j) |) + SUM_i_j_k(| A(i) & A(j) & A(k) |) ..... +
  8. + (-1) ^ ( n-1 ) SUM_1...n(|A(i)&...A(n)|)
  9. 4 Итоговое формула ответа (1 учитываем как не составное число)
  10. ans = n - | |(K) | + |K| - cnt_of_prime[n] - 1(если 1 учтена в решете то вычитать ее не нужно).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement