← Назад к геометрии

Приведение уравнения прямой к нормальному виду

Нормализация коэффициентов уравнения ax + by + c = 0

🐍 Python
a*x + b*y = c

g = gcd([a, b, c])
(a/g)*x + (b/g)*y = (c/g)

if a != 0: a > 0
elif b != 0: b > 0
else: c > 0
⚙️ C++
#include <bits/stdc++.h>
using namespace std;

int gcd(int a, int b) {
    return b ? gcd(b, a % b) : abs(a);
}

int gcd3(int a, int b, int c) {
    return gcd(gcd(a, b), c);
}

int main() {
    int a, b, c;
    cin >> a >> b >> c;
    
    int g = gcd3(a, b, c);
    a /= g; b /= g; c /= g;
    
    if (a < 0 || (a == 0 && b < 0) || (a == 0 && b == 0 && c < 0)) {
        a = -a; b = -b; c = -c;
    }
    
    cout << a << " " << b << " " << c << endl;
    
    return 0;
}

Нормализация уравнения прямой

Уравнение прямой ax + by = c приводится к нормальному виду:

  1. Сокращаем коэффициенты на НОД(a, b, c)
  2. Нормируем знак: первый ненулевой коэффициент должен быть положительным

Правила нормализации:

Такая нормализация позволяет однозначно сравнивать прямые и упрощает их хранение.

Формат ввода и вывода

Ввод: a b c — коэффициенты уравнения ax + by = c

Вывод: нормализованные коэффициенты

Пример:

-2 4 6

НОД(2,4,6) = 2 → (-1, 2, 3) → a < 0, умножаем на -1 → (1, -2, -3)

Вывод: 1 -2 -3

Попробовать онлайн

Результат появится здесь...