Diện tích tam giác gấp đôi
Công thức shoelace (công thức dây giày) tính diện tích một đa giác từ toạ độ các đỉnh. Với
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: cpp-basics, integer-arithmetic.
Nội dung đề bài
Mô tả bài toán
Công thức shoelace (công thức dây giày) tính diện tích một đa giác từ toạ độ các đỉnh. Với tam giác, nhân đôi diện tích sẽ triệt tiêu mẫu số 2, nên toàn bộ phép tính chỉ còn số nguyên — đó là lý do các bài hình học tính toán thường hỏi diện tích gấp đôi thay vì diện tích.
Yêu cầu
Cho ba điểm A(x1, y1), B(x2, y2), C(x3, y3) với toạ độ nguyên. Hãy in ra diện tích gấp đôi của tam giác ABC, tức giá trị
D = |x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)|D luôn là số nguyên. Nếu ba điểm thẳng hàng thì D = 0.
Quy ước nộp bài
Nộp chương trình solution.cpp đọc dữ liệu từ stdin và in kết quả ra stdout. Chỉ in đúng một số nguyên là diện tích gấp đôi, không in diện tích, không in thêm chữ nào khác.
Input
- Một dòng duy nhất gồm sáu số nguyên x1 y1 x2 y2 x3 y3
(-1000 <= xi, yi <= 1000), cách nhau bởi dấu cách.
Output
In ra một dòng duy nhất là giá trị D — số nguyên gấp đôi diện tích tam giác, tính bằng giá trị tuyệt đối nên không bao giờ âm.
Ràng buộc
- Toạ độ là số nguyên, |xi|, |yi| <= 1000; giá trị D nhỏ hơn 8 * 10^6 nên nằm gọn
trong kiểu int.
- Thời gian cho mỗi bộ dữ liệu là 1 giây.
Ví dụ 1
Input
0 0 4 0 0 3
Output
12
Ví dụ 2
Input
0 0 1 0 0 1
Output
1
Giải thích
Với dữ liệu vào:
ta có D = |0 * (0 - 3) + 4 * (3 - 0) + 0 * (0 - 0)| = |0 + 12 + 0| = 12, và diện tích tam giác là 12 / 2 = 6. Kết quả in ra:
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
