
intersectLine
Đoàn mới đi công tác bằng trực thăng về, qua miền đồng bằng, Đoàn thấy các miền ruộng bạt ngàn được ngăn cách nhau bởi ranh giới hay còn gọi là “bờ”. Đoàn lại liên tưởng tới bài toán: Trong mặt phẳng, cho n
đường thẳng, các đường thẳng này có thể cắt nhau và chia đường thẳng thành các phần mặt phẳng riêng biệt mà “bờ” chính là các đường thẳng hoặc một phần của chúng, vậy liệu với n đường thẳng cho trước, sẽ tạo ra được tối đa bao nhiều phần mặt phẳng riêng biệt như vậy? Đoàn suy nghĩ hồi lâu vẫn chưa ra, bạn hãy thử giúp anh ấy xem sao.
Ví dụ:
- Với
n = 3
, thì kết quả sẽ lànumberOfLine(3) = 7
Với hình bên dưới ta có thể thấy rằng các đường thẳng (màuđỏ, hồng
vàđen
) cắt nhau và chia mặt phẳng ra7
phần,7
cũng chính là số phần riêng biệt tối đa mà mặt phẳng có thể bị chia ra bởi3
đường thẳng cắt nhau.
Đầ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 <= 100000
. - [Đầu ra] long
Số đường phần mặt phẳ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 trên mặt phẳng.
Post Comment