Đếm điểm nguyên trong đa giác
Đề bài
Mô tả
Cho một đa giác đơn (simple polygon) gồm đỉnh có toạ độ nguyên, được liệt kê theo thứ tự dọc theo biên (cùng chiều kim đồng hồ hoặc ngược chiều kim đồng hồ). Đa giác đơn nghĩa là các cạnh không tự cắt nhau (ngoại trừ tại các đỉnh chung kề nhau).
Hãy đếm số điểm nguyên (điểm có cả hai toạ độ là số nguyên) nằm bên trong nghiêm ngặt đa giác — tức là không nằm trên biên của đa giác.
Dữ liệu vào
- Dòng đầu chứa số nguyên — số đỉnh.
- dòng sau, mỗi dòng chứa hai số nguyên — toạ độ đỉnh thứ .
Dữ liệu ra
In ra một số nguyên duy nhất — số điểm nguyên nằm bên trong nghiêm ngặt đa giác.
Ràng buộc
- .
- .
- Đa giác đảm bảo là đa giác đơn; không có hai đỉnh liên tiếp trùng nhau.
- Kết quả có thể tới , nên cần dùng kiểu số nguyên 64-bit.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 0 0 4 0 4 3 0 3 |
6 | Hình chữ nhật . Diện tích , số điểm biên , điểm trong . |
| 3 0 0 5 0 0 4 |
6 | Tam giác vuông. , , . |
| 3 0 0 1 0 0 1 |
0 | Tam giác nhỏ. , , . |
Ghi chú
Có thể dùng định lý Pick: với đa giác đơn có các đỉnh nguyên, , trong đó là diện tích, là số điểm nguyên bên trong, là số điểm nguyên trên biên.
Bình luận