Блог пользователя topovik

Автор topovik, история, 5 лет назад, По-русски

Условие

RSA++

Тур I, задача 4

Исследовательский отдел министерства обороны Байтландии разработал новый сверхнадежный алгоритм шифрования. Назвать новый алгоритм решили RSA++, так как за его основу был взят знаменитый алгоритм RSA.

Как известно, в основе алгоритма RSA лежит использование пары простых натуральных чисел P и Q и производного числа N = P * Q. Числа P и Q называются ключами шифрования, а число N – модулем шифрования. Простое число — это натуральное число, которое имеет ровно два различных натуральных делителя: единицу и самого себя.

Принципиальным отличием нового RSA++ алгоритма от RSA алгоритма состоит в выборе ключей. Если в реализации RSA алгоритма требуется пара простых чисел P и Q, то в RSA++ алгоритме числа P и Q должны быть взаимно простыми. Два натуральных числа называются взаимно простыми, если они не имеют никаких общих делителей, кроме единицы.

Для анализа надежности нового алгоритма ученые хотят узнать количество различных пар ключей P и Q, таких, что 1 < P < Q и соответствующий им модуль шифрования удовлетворяет условию: N ≤ K. Ваша задача помочь ученым в решении этого нелегкого вопроса.

Входные данные Первая строка входного файла содержит одно целое число K (1 ≤ K ≤ 109).

Выходные данные Выходной файл должен содержать одно целое число – количество различных пар ключей P и Q.

input.txt

output.txt

Примечание

12

3

(2,3); (2,5); (3,4)

18

6

(2,3);(2,5);(2,7);(2;9);(3,4);(3;5)

Решение

Давайте перебирать первое число до √n.

Выберем диапазон, в котором лежит следующее число.

И тогда задача сводится к следующей : найти все числа в промежутке 1..n взаимно простые с текущим.

Давайте выпишем список всех различных делителей числа, их будет не больше 6.

Переберём все числа, которые можно получить перемножением каких либо делителей. Для этого переберём все подмаски списка делителей, посмотрим на числа, которые получаются при перемножении чисел на позициях, где стоят 1.Посмотрим кол-во чисел на отрезке, которые делятся на текущее. Если кол-во единиц в маске чётное, прибавим к переменной кол-во делящихся чисел на отрезке, а иначе отнимем.

В конце алгоритма получаем кол-во чисел не взаимно простых с текущим числом.

И пользуясь методом включений-исключений получаем ответ.

Примерная асимптотика О(√n(2^6+⁴√n))

Полный текст и комментарии »

  • Проголосовать: нравится
  • -11
  • Проголосовать: не нравится

Автор topovik, история, 5 лет назад, По-английски

Hi for everyone.

At this blog I want to offer you some tasks on D&C optimization.

About this algorithm you can learn here.

When you can use this and other DP optimizations you can learn at this blog.

Some tasks on D&C optimization.

834D - The Bakery

673E - Levels and Regions

321E - Ciel and Gondolas

868F - Yet Another Minimization Problem

Полный текст и комментарии »

  • Проголосовать: нравится
  • -10
  • Проголосовать: не нравится

Автор topovik, история, 5 лет назад, По-английски
  • Проголосовать: нравится
  • -11
  • Проголосовать: не нравится

Автор topovik, история, 5 лет назад, По-русски

Привет. В этом посте я дам несколько статей на центроидную декомпозицию и задач.

Ниже приведены полезные посты на эту тему

https://neerc.ifmo.ru/wiki/index.php?title=Centroid_decomposition

https://codeforces.net/blog/entry/73707

Также задачи на эту тему:

293E - Close Vertices

321C - Ciel the Commander

342E - Xenia and Tree

914E - Palindromes in a Tree

960E - Alternating Tree

990G - GCD Counting

1156D - 0-1-Tree

776F - Sherlock's bet to Moriarty

716E - Digit Tree

348E - Pilgrims

150E - Freezing with Style

Полный текст и комментарии »

  • Проголосовать: нравится
  • +1
  • Проголосовать: не нравится

Автор topovik, 5 лет назад, По-русски
  • Проголосовать: нравится
  • +10
  • Проголосовать: не нравится

Автор topovik, история, 5 лет назад, По-русски

Всем привет.

В этом посте я хотел бы предложить несколько задач на CHT.

Ниже приведены статьи про CHT, дерево Ли Шао.

https://codeforces.net/blog/entry/63823

https://neerc.ifmo.ru/wiki/index.php?title=Convex_hull_trick

https://cp-algorithms.com/geometry/convex_hull_trick.html

https://wiki.algocode.ru/index.php?title=%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_Li_Chao

Задачи, которые можно решить с использованием CHT с стеком

1083E - Орехус и прямоугольники

311B - Транспортировка кошек

Задачи ниже вы можете решить с использованием дерева Ли Шао или димнамического CHT

1303G - Сумма префиксных сумм

1175G - Очередная задача на разбиения

932F - Сбежать через лист

792F - Маги и монстры

631E - Мультипликативная сумма

Полный текст и комментарии »

  • Проголосовать: нравится
  • +9
  • Проголосовать: не нравится