#include <iostream>
#include <cmath> // Cho hàm sqrt()
#include <iomanip> // Cho std::fixed và std::setprecision
int main() {
// Hệ số của parabol: y = ax^2 + bx + c
double a_parabol, b_parabol, c_parabol;
// Hệ số của đường thẳng: y = mx + d
double m_line, d_line;
std::cout << "Nhap he so cua parabol (a b c): ";
std::cin >> a_parabol >> b_parabol >> c_parabol;
std::cout << "Nhap he so cua duong thang (m d): ";
std::cin >> m_line >> d_line;
// Bien doi ve phuong trinh bac hai: Ax^2 + Bx + C = 0
// a_parabol*x^2 + b_parabol*x + c_parabol = m_line*x + d_line
// a_parabol*x^2 + (b_parabol - m_line)*x + (c_parabol - d_line) = 0
double A = a_parabol;
double B = b_parabol - m_line;
double C = c_parabol - d_line;
// Tinh Delta (biệt thức)
double delta = B * B - 4 * A * C;
// Thiết lập độ chính xác cho đầu ra
std::cout << std::fixed << std::setprecision(4);
if (delta > 0) {
// Hai diem giao nhau
double x1 = (-B + std::sqrt(delta)) / (2 * A);
double x2 = (-B - std::sqrt(delta)) / (2 * A);
double y1 = m_line * x1 + d_line;
double y2 = m_line * x2 + d_line;
std::cout << "Parabol va duong thang cat nhau tai 2 diem:" << std::endl;
std::cout << "Diem 1: (" << x1 << ", " << y1 << ")" << std::endl;
std::cout << "Diem 2: (" << x2 << ", " << y2 << ")" << std::endl;
} else if (delta == 0) {
// Mot diem giao nhau (tiep xuc)
double x = -B / (2 * A);
double y = m_line * x + d_line;
std::cout << "Parabol va duong thang tiep xuc tai 1 diem:" << std::endl;
std::cout << "Diem: (" << x << ", " << y << ")" << std::endl;
} else {
// Khong co diem giao nhau
std::cout << "Parabol va duong thang khong co diem giao nhau." << std::endl;
}
return 0;
}