trang chủ / đề bài / dhbb23_lqddn_10_b

Dãy Fibonacci

Đề bài

Mô tả

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.

Mỗi phần tử thuộc đúng một dãy con. Hai cách chia được coi là khác nhau nếu tập các vị trí cắt khác nhau. Dãy Fibonacci được xác định bởi F1=F2=1, Fk=Fk−1+Fk−2 với k≥3, nên các số Fibonacci là 1,2,3,5,8,13,…

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n (1≤n≤105);
  • Dòng tiếp theo chứa n số nguyên a1,a2,…,an (1≤ai≤109).

Dữ liệu ra

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 109+7.

Ràng buộc

  • 1≤n≤105
  • 1≤ai≤109

Subtasks

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

Ví dụ

Input Output Giải thích
5
2 5 3 1 2
5 Có 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].
3
1 1 1
4 Ví dụ thêm (không có trong đề gốc). Các cách chia: [1],[1],[1]; [1,1],[1]; [1],[1,1]; [1,1,1] (các tổng 1,2,3 đều là số Fibonacci).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0