D13 Диофантовы уравнения: общий метод (оценка + перебор остатков)
Раздел: D · Классы: 8, 9, 10, 11 · Сложность: 3/5 · На ВсОШ-9: 5×
Рекомендуется для: ВсОШ, Ломоносов, Курчатов
📖 Определение
Метод состоит в том, что задачи вида «найдите все целые (натуральные, неотрицательные) решения уравнения» решаются по единому алгоритму, а не интуитивными догадками. Вместо того чтобы искать ответ наугад, мы последовательно сужаем множество кандидатов, пока не останется конечный список, который можно проверить.
Интуиция: представьте, что вы ищете потерянные ключи в большом доме. Если сразу обыскивать все комнаты одновременно — хаос. Правильная стратегия: сначала оцените, в каких комнатах вы вообще бывали (оценка области), потом исключите те, куда ключи физически не могли попасть (остатки по модулю), затем переберите оставшееся.
Метод объединяет пять инструментов, которые применяются в порядке возрастания сложности:
1. Оценка области — получаем конечный ящик, в котором живут все решения.
2. Анализ остатков — исключаем большинство кандидатов из ящика.
3. Факторизация — сводим уравнение к произведению, анализируем делители.
4. Параметризация — описываем бесконечное семейство решений аналитически.
5. Спуск/подъём — доказываем, что решений нет, через противоречие с минимальностью.
Этот метод — метаалгоритм: в конкретной задаче вы включаете один-два из этих инструментов. Умение быстро выбрать правильный инструмент приходит с практикой, но сам алгоритм принятия решений можно формализовать.
📐 Главные теоремы и формулы
-
Теорема Безу (линейные диофантовы уравнения). Уравнение $ax + by = c$ имеет целые решения тогда и только тогда, когда $\gcd(a,b) \mid c$. Если $(x_0, y_0)$ — одно решение, то общее: $x = x_0 + \frac{b}{d}t$, $y = y_0 - \frac{a}{d}t$, $t \in \mathbb{Z}$, где $d = \gcd(a,b)$. Когда использовать: уравнение линейно по всем переменным.
-
Лемма об остатках. Если $a \equiv r \pmod{m}$, то $a^2 \equiv r^2 \pmod{m}$. Квадраты по модулю $3$ дают остатки $0$ или $1$; по модулю $4$ — остатки $0$ или $1$; по модулю $8$ — остатки $0, 1, 4$. Когда использовать: уравнение содержит квадраты; нужно показать, что решений нет или ограничить остатки.
-
Факторизационный приём. Если уравнение $f(x,y)=N$ допускает разложение $f(x,y) = A(x,y)\cdot B(x,y)$, то каждая пара $(A,B)$ — делитель числа $N$, и число таких пар конечно. Когда использовать: после перегруппировки левая часть распадается в произведение (особенно $x^2 - y^2 = N$, $xy + ax + by = c$).
-
Оценка через неравенство. Из уравнения $P(x,y)=0$ оцениваем: $|x| \leq C$ и $|y| \leq C$ для некоторого явного $C$. Когда использовать: уравнение содержит сумму неотрицательных слагаемых (квадраты, модули), что автоматически ограничивает каждое из них.
-
Параметрическое описание решений. Для $x^2 + y^2 = z^2$ (примитивные тройки): $x = m^2 - n^2$, $y = 2mn$, $z = m^2 + n^2$ при $m > n > 0$, $\gcd(m,n)=1$, $m \not\equiv n \pmod{2}$. Когда использовать: задача просит описать все решения, а не просто найти конечный список.
💡 Типичные техники
-
Шаг 1 — ограничение области: выразите одну переменную через другие и оцените, при каких значениях выражение остаётся целым и лежит в нужном диапазоне. Для $x^2 + y^2 = N$ сразу пишите $|x| \leq \sqrt{N}$, $|y| \leq \sqrt{N}$.
-
Шаг 2 — выбор модуля: испытайте уравнение по $\bmod 3$, $\bmod 4$, $\bmod 7$, $\bmod 8$. Выбирайте тот модуль, при котором одна из сторон уравнения принимает мало значений (квадраты по $\bmod 4$ дают лишь $0$ и $1$).
-
Шаг 3 — перебор остатков: составьте таблицу значений левой и правой частей по выбранному модулю; ищите, при каком остатке уравнение вообще может иметь решение.
-
Шаг 4 — факторизация: если видите $a^2 - b^2$, немедленно пишите $(a-b)(a+b)$; если видите $xy + ax + by$, добавьте $ab$ к обеим частям и разложите $(x+b)(y+a) = c + ab$; ищите делители числа в правой части.
-
Шаг 5 — анализ делителей: если произведение $AB = N$, перебирайте все пары делителей: $A = d_1$, $B = d_2$, $d_1 d_2 = N$, решайте систему $A = d_1$, $B = d_2$ для каждой пары. Не забывайте про отрицательные делители!
-
Шаг 6 — параметризация или спуск: если решений бесконечно много, описывайте их формулой с параметром $t \in \mathbb{Z}$. Если подозреваете, что решений нет, примените метод бесконечного спуска или найдите инвариант, делающий левую и правую части несовместимыми.
-
Проверка граничных случаев: после получения кандидатов не забудьте подставить их обратно в исходное уравнение — факторизация иногда вводит посторонние решения.
🎯 Когда применять (триггеры)
Поверхностные признаки (что буквально написано):
- «Найдите все целые числа $x, y$ такие, что...»
- «Найдите все натуральные решения уравнения»
- «При каких целых $n$ выражение ... является ...» (целым, квадратом, простым)
- В условии присутствует уравнение с двумя или более целочисленными неизвестными
Структурные признаки (форма выражения, объекты):
- Уравнение степени 1 по всем переменным: линейное диофантово $ax+by=c$
- Уравнение вида $x^2 - y^2 = N$ или $xy = N$ — сигнал на факторизацию
- Уравнение вида $\frac{1}{x} + \frac{1}{y} = \frac{1}{n}$ — после умножения даёт факторизацию
- Сумма квадратов равна числу: $x^2 + y^2 = N$
- В правой части стоит простое число или степень простого — делителей мало
Цель задачи (что от тебя хотят):
- Найти полный список решений (или доказать, что их нет)
- Доказать, что решений бесконечно много / конечное число
- Найти все натуральные $n$, при которых что-то выполняется
✅ Разобранный пример
Задача 1. Линейное диофантово уравнение
Условие: Найдите все натуральные числа $x, y$, удовлетворяющие уравнению $2x + 3y = 100$.
Источник: тренировочная
Как думать (рассуждение ученика$):
1. $Что я вижу? Линейное уравнение с двумя натуральными неизвестными. Триггер: «найдите все натуральные решения», уравнение 1-й степени.$2. *$Метод: линейное диофантово уравнение. $\gcd(2,3)=1$ делит 100 — решения существуют.$3. *$Первый ход: выражу $x$ через $y$: $x = \frac{100 - 3y}{2}$. Для натуральности $x$ нужно: (а) $100 - 3y > 0$, т.е. $y \leq 33$; (б) $100 - 3y$ чётно, т.е. $3y$ чётно, т.е. $y$ чётно.$4. *$Дальнейшие действия:* $y = 2k$, $k \geq 1$. Тогда $x = \frac{100-6k}{2} = 50 - 3k$. Условие $x \geq 1$: $50 - 3k \geq 1 \Rightarrow k \leq 16$. Итого $k \in \{1, 2, \ldots, 16\}$.
Решение:
Выразим $x$ через $y$:$x = \frac{100 - 3y}{2}.$ Чтобы $x$ было натуральным: $y$ чётно и $y \leq 33$. Пусть $y = 2k$, тогда$x = 50 - 3k, \quad k \in \mathbb{N}.$ Условие $x \geq 1$: $50 - 3k \geq 1 \Rightarrow k \leq 16$. Таким образом, $k = 1, 2, \ldots, 16$.
Ответ: Ровно 16 решений: $(x,y) = (50-3k,\ 2k)$ при $k = 1, 2, \ldots, 16$.
Что в этой задаче было главным: параметризация через чётность сразу сводит бесконечный перебор к конечному диапазону параметра $k$. Оценка сверху и снизу замыкает список.
Задача 2. Факторизация: уравнение $\frac{1}{x} + \frac{1}{y} = \frac{1}{12}$
Условие: Найдите все пары натуральных чисел $(x, y)$, для которых $\dfrac{1}{x} + \dfrac{1}{y} = \dfrac{1}{12}$.
Источник: тренировочная (классическая олимпиадная задача)
Как думать (рассуждение ученика$):
1. $Что я вижу?* Уравнение с дробями, натуральные решения. Триггер: «найдите все натуральные $(x,y)$».$2. *$Первый ход: умножим обе части на $12xy$:$12y + 12x = xy.$
$3. *$Ключевая идея: перенесём всё в одну сторону и сфакторизуем:$$xy - 12x - 12y = 0 \Rightarrow xy - 12x - 12y + 144 = 144 \Rightarrow (x-12)(y-12) = 144.$$
$4. *$Теперь: нужно найти все разложения $144 = d_1 \cdot d_2$, $d_1, d_2 \geq 1$ (так как $x,y > 12$ при натуральных $x,y$). Из каждого разложения: $x = d_1 + 12$, $y = d_2 + 12$.
Решение:
Умножим на $12xy$:$$12(x+y) = xy \Rightarrow (x-12)(y-12) = 144.$$ Число $144$ имеет делители $d_1 \in \{1,2,3,4,6,8,9,12,16,18,24,36,48,72,144\}$. Для каждого $d_1$ берём $d_2 = 144/d_1$:
| $d_1$ | $d_2$ | $x$ | $y$ |
|---|---|---|---|
| 1 | 144 | 13 | 156 |
| 2 | 72 | 14 | 84 |
| 3 | 48 | 15 | 60 |
| 4 | 36 | 16 | 48 |
| 6 | 24 | 18 | 36 |
| 8 | 18 | 20 | 30 |
| 9 | 16 | 21 | 28 |
| 12 | 12 | 24 | 24 |
| 16 | 9 | 28 | 21 |
| ... | ... | ... | ... |
Учитывая симметрию (пары $(x,y)$ и $(y,x)$ считаем разными), получаем 15 пар.
Ответ: 15 пар натуральных чисел.
Что в этой задаче было главным: добавление $144 = 12^2$ к обеим частям — стандартный трюк для уравнений с $\frac{1}{x}+\frac{1}{y}$. После факторизации задача сводится к тривиальному перебору делителей.
⚠️ Подводные камни
-
Ошибка: забываем про отрицательные делители. В задаче $(x-a)(y-b)=N$ пара $(-d_1, -d_2)$ тоже даёт $N$, если $N > 0$. → Почему неверно: пропускаем решения с $x < a$ или $y < b$. → Как избежать: всегда перечисляйте ВСЕ делители числа $N$, включая отрицательные, если задача не ограничивает натуральными числами.
-
Ошибка: неправильный выбор модуля приводит к потере времени. Пробуем $\bmod 6$, а нужно $\bmod 4$. → Почему неверно: таблица остатков квадратов по $\bmod 6$ даёт много значений и не отсеивает кандидатов. → Как избежать: квадраты — сразу $\bmod 4$ или $\bmod 8$; кубы — $\bmod 7$ или $\bmod 9$.
-
Ошибка: не проверяем посторонние решения после факторизации. Умножение обеих частей на $xy$ может вводить решения $x=0$ или $y=0$. → Почему неверно: $x=0$ делает исходное выражение бессмысленным. → Как избежать: подставляйте все найденные кандидаты в исходное уравнение.
-
Ошибка: при оценке области забываем про симметрию. Оцениваем $x \leq C$, но не учитываем, что $y$ может быть большим. → Почему неверно: оценка $x^2 + y^2 = N$ даёт $|x| \leq \sqrt{N}$ И $|y| \leq \sqrt{N}$ одновременно — обе переменные ограничены. → Как избежать: явно выписывайте ограничения на каждую переменную по отдельности.
-
Ошибка: при линейном уравнении пишем только одно частное решение, не общее. → Почему неверно: задача просит ВСЕ решения. → Как избежать: после нахождения $(x_0, y_0)$ сразу пишите общую формулу $x = x_0 + \frac{b}{d}t$, $y = y_0 - \frac{a}{d}t$, затем накладывайте ограничения (натуральность, положительность).
-
Ошибка: параметризуем, не проверяя условие взаимной простоты. Для пифагоровых троек формула $x = m^2-n^2$, $y=2mn$, $z=m^2+n^2$ описывает ПРИМИТИВНЫЕ тройки только при $\gcd(m,n)=1$ и $m \not\equiv n \pmod{2}$. → Как избежать: всегда выписывайте условия применимости параметризации.