Count Max Line
Trong mặt phẳng, cho n
đường thẳng, các đưởng thẳng này có thể cắt nhau tại các giao điểm.
Như chúng ta đã biết, cứ qua 2
điểm ta lại xác được 1
đường thẳng. Hai đường thẳng được gọi là trùng nhau nếu giữa chúng có ít nhất 2
điểm chung.
Nhiệm vụ của bạn là xác định xem với n
đường thẳng cắt nhau trên mặt phẳng (các đường thẳng có thể được vẽ tùy ý) thì qua các giao điểm của chúng, ta xác định được tối đa bao nhiêu đường thẳng phân biệt (không trùng nhau), bao gồm cả các đường thẳng ban đầu.
Ví dụ:
- Với
n = 4
, thì kết quả sẽ lànumberOfLine(4) = 7
Với hình bên dưới ta có thể thấy rằng các giao điểm của 4 đường thẳng (màuxanh, đỏ, vàng
vàđen
) làA, B, C, D, E, F
.
Qua tất cả các giao điểm ta lại xác định được rằng có7
đường thẳng đi qua các giao điểm đó. Bao gồm:AE, AC, EB, FC, FB, EC, AD
.
Lưu ý: đường thẳng đi quaA, E
và đường thẳng đi quaA, F
trùng nhau nên ta chỉ tính một lần, các trường hợp tương tự cũng chỉ tính một lần.
Đầu vào/Đầu ra:
- [Thời gian] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript.
- [Đầu vào] integer n
0 < n <= 10000
. - [Đầu ra] long
Số đường thẳng phân biệt lớn nhất được xác định bởi các giao điểm củan
đường thẳng thên mặt phẳng.
Post Comment