Công việc của tôi là xếp đá cuội thành đống hình tam giác. Tôi mới chỉ làm điều này trong một thế kỷ và nó đã khá nhàm chán. Phần tồi tệ nhất là tôi dán nhãn cho mỗi đống. Tôi biết cách phân hủy sỏi thành đống có kích thước tối đa , nhưng tôi muốn giảm thiểu số lượng cọc. Bạn có thể giúp?
Bài tập
Cho một số nguyên, phân tách nó thành số lượng tam giác tối thiểu và xuất ra số tối thiểu đó.
Số tam giác
Số tam giác là một số có thể được biểu thị bằng tổng của các n
số tự nhiên đầu tiên , đối với một số giá trị n
. Do đó, một số số tam giác đầu tiên là
1 3 6 10 15 21 28 36 45 55 66 78 91 105
Thí dụ
Ví dụ, giả sử đầu vào là 9
. Nó không phải là số tam giác, vì vậy nó không thể được biểu thị dưới dạng tổng của 1
số tam giác. Do đó, số lượng tam giác tối thiểu là 2
, có thể thu được với [6,3]
, mang lại đầu ra chính xác của 2
.
Một ví dụ khác, giả sử đầu vào là 12
. Giải pháp rõ ràng nhất là sử dụng thuật toán tham lam và loại bỏ số tam giác lớn nhất tại một thời điểm, cho năng suất [10,1,1]
và đầu ra 3
. Tuy nhiên, có một giải pháp tốt hơn : [6,6]
, mang lại đầu ra chính xác 2
.
Các trường hợp thử nghiệm
in out
1 1
2 2
3 1
4 2
5 3
6 1
7 2
8 3
9 2
10 1
11 2
12 2
13 2
14 3
15 1
16 2
17 3
18 2
19 3
20 2
100 2
101 2
5050 1
Quy tắc
- Số nguyên đầu vào nằm trong khoảng từ 1 đến số nguyên tối đa của ngôn ngữ của bạn.
- Tôi có thể mô phỏng bất kỳ ngôn ngữ nào với các viên sỏi của mình và tôi muốn mã của bạn càng nhỏ càng tốt vì tôi không có gì ngoài viên sỏi để theo dõi nó. Do đó, đây là mã golf , vì vậy mã ngắn nhất trong mỗi ngôn ngữ sẽ thắng.
n = 12
).