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

Автор EJIC_B_KEDAX, история, 9 дней назад, По-русски

Привет, Codeforces!

Сегодня я расскажу о непопулярной технике в теории чисел.

Определение и элементарные свойства

Опр. Пусть $$$p > 2$$$ простое число, тогда квадратичным вычетом по модулю $$$p$$$ назовём все $$$1 \le x \le p - 1$$$, такие, что уравнение $$$a^2 \equiv x \pmod{p}$$$ имеет решения и квадратичным невычетом иначе. Обратите внимание, что $$$0$$$ не является ни квадратичным вычетом, ни квадратичным невычетом.

Теорема: Квадратичных вычетов и крадратичных невычетов поровну.

Доказательство

Теорема: Обозначим за $$$B$$$ квадратичный вычет, а за $$$H$$$ квадратичный невычет, тогда:

$$$B \cdot B = B$$$
$$$H \cdot B = H$$$
$$$H \cdot H = B$$$
Доказательство

С помощью этих двух теорем уже можно решить 103428K - Tiny Stars.

Как проверить, число вычет или невычет?

Есть несколько способов проветь является ли число квадратичным вычетом. В этом блоге мы рассмотрим только один из них, вы можете почитать про лемму Гаусса и квадратичный закон взаимности.

Критерий Эйлера

$$$a$$$ является квадратичным вычетом по модулю $$$p$$$ тогда и только тогда, когда $$$a^{\frac{p - 1}{2}} \equiv 1 \pmod{p}$$$, и квадратичным невычетом тогда и только тогда, когда $$$a^{\frac{p - 1}{2}} \equiv -1 \pmod{p}$$$.

Доказательство

Следствие: $$$-1$$$ является квадратичным вычетом тогда и только тогда, когда $$$p = 4k + 1$$$, для какого-то натурального $$$k$$$, и квадратичным невычетом тогда и только тогда, когда $$$p = 4k + 3$$$, для какого-то натурального $$$k$$$.

Очевидно, что сложность проверки числа $$$O(\log_2p)$$$.

Код

Нахождение $$$i$$$ по модулю $$$p$$$

Опр. $$$i$$$ это такое число, что $$$i^2 = -1$$$ $$$\implies$$$ $$$i$$$ по модулю $$$p$$$ назовём такое число, что $$$i ^ 2 \equiv -1 \pmod{p}$$$.

Алгоритм: Если $$$p = 4k + 3$$$ для какого-то натурального $$$k$$$, то такого $$$i$$$ не существует. Если $$$p = 2$$$, то $$$i = 1$$$. Иначе рассмотрим квадратичный невычет $$$a$$$, по критерию Эйлера нам известно, что $$$a^{\frac{p - 1}{2}} \equiv -1 \pmod{p}$$$, тогда $$$a^{\frac{p - 1}{4}} \equiv i \pmod{p}$$$. Осталось лишь найти квадратичный невычет, для этого возьмём случайное $$$1 \le a \le p - 1$$$ и проверим его за $$$O(\log_2p)$$$, если это квадратичный вычет, то берём другое случайное $$$a$$$. Так как вычетов и невычетов поровну, то нам понадобится $$$O(1)$$$ таких проверок, а значит ожидаемое время работы алгоритма $$$O(\log_2p)$$$.

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