Tựa Fibonacci
Đề bài
Mô tả
Một dãy số nguyên được gọi là tựa Fibonacci nếu thoả mãn đồng thời:
- Dãy có ít nhất hai phần tử, tức .
- Hai phần tử đầu tiên và là hai số nguyên tuỳ ý (có thể âm, có thể bằng , có thể bằng nhau).
- với mọi chỉ số hợp lệ.
Cho dãy số nguyên . Bạn được phép sắp xếp lại (hoán vị) toàn bộ các phần tử của dãy theo thứ tự tuỳ ý. Hãy chọn cách sắp xếp sao cho tiền tố dài nhất của dãy thu được là một dãy tựa Fibonacci.
Nói cách khác, bạn cần chọn ra một số phần tử của dãy (mỗi phần tử dùng đúng số lần nó xuất hiện trong dãy ban đầu, không nhiều hơn) và xếp chúng thành một dãy tựa Fibonacci dài nhất có thể; các phần tử còn lại được đẩy về cuối.
Hãy in ra độ dài của tiền tố tựa Fibonacci dài nhất.
Dữ liệu vào
- Dòng đầu tiên chứa một số nguyên là số lượng phần tử của dãy.
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
In ra một số nguyên duy nhất: độ dài lớn nhất có thể của tiền tố tựa Fibonacci.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 1 2 -1 |
3 | Sắp xếp lại thành . Vì nên cả dãy là tựa Fibonacci, tiền tố có độ dài . |
| 5 28 35 7 14 21 |
4 | Sắp xếp lại thành . Tiền tố là tựa Fibonacci vì và . Phần tử kế tiếp phải là nhưng dãy không có , nên không đạt được độ dài . |
| 4 0 0 0 0 |
4 | Với thì mọi phần tử tiếp theo cũng bằng , nên toàn bộ bốn số tạo thành một dãy tựa Fibonacci. |
Bình luận