
ropes
Anh Vinh có n
đoạn dây thừng có độ dài lần lượt là a0, a1, ..., an-1.
Anh Vinh đang cần k
đoạn dây thừng có độ dài bằng nhau, nên anh Vinh quyết định sẽ cắt n
đoạn dây đó để có được k
đoạn dây bằng nhau, mỗi đoạn có độ dài là một số nguyên dương x.
Hãy tìm và đưa ra độ dài x
lớn nhất có thể của k
đoạn dây sau khi cắt. Nếu không tồn tại cách cắt nào để anh Vinh có k đoạn dây bằng nhau thì đưa ra -1.
Ví dụ:
- Với
a = [803,456,723,231]
,k = 10
, thìropes(a,k) = 200
.
Giải thích: Anh vĩnh có4
đoạn dây có độ dài là803, 456, 723, 231
, và anh Vinh cần10
đoạn dây bằng nhau.
Độ dài lớn nhất của10
đoạn dây đó là200
.- Với đoạn dây có độ dài
803
, ta có thể cắt được4
đoạn dây độ dài200
. - Với đoạn dây có độ dài
456
, ta có thể cắt được2
đoạn dây độ dài200
. - Với đoạn dây có độ dài
723
, ta có thể cắt được3
đoạn dây độ dài200
. - Với đoạn dây có độ dài
231
, ta có thể cắt được1
đoạn dây độ dài200
.
- Với đoạn dây có độ dài
- Với
a = [1,1,2]
,k = 5
, thìropes(a,k) = -1.
Đầu vào/Đầu ra:
-
[Thời gian chạy] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript
- [Đầu vào] Array of integer a
1 ≤ a.size ≤ 106.
1 ≤ a[i] ≤ 103.
- [Đầu vào] Integer k
1 ≤ k ≤ 109.
- [Đầu ra] Integer
Số nguyên dươngx
lớn nhất là độ dài củak
đoạn dây. Nếu không tồn tại cách cắt nào để cók
đoạn day bằng nhau thì trả về-1
.
Post Comment