Tổng đoạn chia hết

View as PDF

Submit solution

Points: 100.00 (partial)
Time limit: 1.0s
Memory limit: 256M
Input: stdin
Output: stdout

Author:
Suggester:
Problem type
Allowed languages
C++, PyPy, Python

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

Please read the guidelines before commenting.


There are no comments at the moment.