Dãy Fibonacci

Xem PDF

Điểm: 1600 (p) Thời gian: 2.0s Bộ nhớ: 256M Input: FIBODISTRIBUTE.INP Output: FIBODISTRIBUTE.OUT

Cho dãy \(a\) gồm \(n\) phần tử được đánh chỉ số từ \(1\) đến \(n\). Hãy đếm số cách chia dãy \(a\) thành các dãy con gồm các phần tử liên tiếp sao cho tổng của mỗi dãy con là một số Fibonacci.

Input

  • Dòng đầu tiên chứa số nguyên \(n\) (\(1 \leq n \leq 10^5\)).
  • Dòng tiếp theo chứa \(n\) số nguyên \(a_1, a_2, \ldots, a_n\) (\(1 \leq a_i \leq 10^9\)).

Output

  • Một dòng duy nhất chứa một số nguyên là phần dư của số cách chia sau khi chia cho \(10^9 + 7\).

Scoring

  • Subtask \(1\) (\(30\%\) số điểm): \(n \leq 10\).
  • Subtask \(2\) (\(30\%\) số điểm): \(n \leq 10^3\).
  • Subtask \(3\) (\(40\%\) số điểm): Không có ràng buộc gì thêm.

Example

Test 1

Input
5
2 5 3 1 2
Output
5
Note

\(5\) cách chia là:

  • \([2], [5], [3], [1], [2]\)
  • \([2], [5], [3], [1, 2]\)
  • \([2], [5, 3], [1], [2]\)
  • \([2], [5, 3], [1, 2]\)
  • \([2, 5, 3, 1, 2]\)

Bình luận

Không có bình luận nào.