Nguyễn Trường An

Giới thiệu về bản thân

Ba chấm😐
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
xếp hạng Ngôi sao 1 ngôi sao 2 ngôi sao 1 Sao chiến thắng
0
(Thường được cập nhật sau 1 giờ!)

1. Một số lỗi logic nhỏ có thể gặp:

  • Trường hợp $a = 0$: Nếu $a = 0$, phương trình trở thành bậc nhất, nhưng code của ông sẽ bị lỗi chia cho 0 (-b/(2*a)). Trong các bài toán tin học, thường họ sẽ cho $a \neq 0$ nhưng nếu đề không nói gì thì nên thêm một bước kiểm tra $a$.
  • Trường hợp $\Delta$ rất nhỏ: Đôi khi do sai số số thực, delta == 0 có thể không bắt được. Người ta thường dùng if (abs(delta) < 1e-9).

2. Tối ưu code cho "gọn":

Thay vì dùng nhiều lệnh fixed << setprecision(5), ông chỉ cần gọi nó một lần duy nhất ở đầu hoặc ngay trước lệnh cout đầu tiên, nó sẽ có tác dụng cho toàn bộ các lệnh cout phía sau.

3. Bản "nâng cấp" sạch đẹp hơn:

C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    // Tối ưu tốc độ nhập xuất
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    double a, b, c;
    if (!(cin >> a >> b >> c)) return 0;

    double delta = b * b - 4 * a * c;

    // Thiết lập lấy 5 chữ số thập phân cho toàn bộ bài
    cout << fixed << setprecision(5);

    if (delta < 0) {
        cout << -1;
    } else if (abs(delta) < 1e-9) { // Xử lý delta = 0 chuẩn xác hơn
        cout << -b / (2 * a);
    } else {
        double sqrtDelta = sqrt(delta);
        double x1 = (-b - sqrtDelta) / (2 * a);
        double x2 = (-b + sqrtDelta) / (2 * a);
        
        // Thường quy ước in số nhỏ trước, số lớn sau
        if (x1 > x2) swap(x1, x2); 
        cout << x1 << " " << x2;
    }

    return 0;
}

dịch:
đằng sau
giữa
gần
đối diện(bạn vt nhầm từ)