Số fib(n) với n ≤ 0 được tính theo công thức sau
~fib(n) =\mathrm{\{ }_{fib(n-1)+fib(n-1) \text{ nếu n }\ge 2}^{n \text{ nếu n } \le 1}~
Yêu cầu:
Cho ba số nguyên dương n, i, k, có thể tìm được một tập con các số trong n số Fibonacci liên tiếp bắt đầu từ số thứ i, sao cho tổng của chúng chia hết cho một số nguyên dương k (k<=n) cho trước hay không? (một tập con q số của một dãy n số là một cách chọn ra q số bất kỳ trong n số của dãy đó), mỗi số được chọn không quá một lần và tổng tìm được là có giá trị nhỏ nhất.
Dữ liệu vào:
Từ thiết bị chuẩn gồm 3 số nguyên dương n, i và k trên cùng một dòng và cách nhau bởi một dấu cách, là thông tin của một bộ dữ liệu.
Dữ liệu ra:
Ghi ra thiết bị chuẩn có dạng:
- Nếu không tìm được tập con thỏa mãn điều kiện thì ghi ra số 0
- Ngược lại, ghi số đầu tiên là q (số lượng các số trong tập con tìm được), tiếp theo ghi q số nguyên (các số thứ tự trong dãy Fibonacci của q trong tập con tìm được).
Subtask
- Subtask (70 điểm): n≤~10^6~, i≤~10^6~
- Subtask (30 điểm): n≤~10^6~, i≤~10^{15}~
Ví dụ:
input
19 3 9
output
2 5 7
Giải thích
Một tập con thỏa mãn điều kiện là tập gồm 2 số F5=5, F7=13 với tổng bằng 18. (18 chia hết 9)
Comments