Điểm:
600 (p)
Thời gian:
3.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Một dãy FIBONACCI được định nghĩa như sau: \(F_0 = F_1 = 1\); \(F_N = F_{N-1} + F_{N-2}\) \(∀\) \(N > 1\).
Một vài phần tử đầu của dãy là: 1,1,2,3,5,8,13,21,...
Với mỗi số nguyên dương \(p\), gọi \(D_p\) là số cách biểu diễn số \(p\) dưới dạng tổng các số FIBONACCI khác nhau.
Bạn được cho một mảng \(A\) gồm \(N\) phần tử. Với mỗi giá trị \(k\) = \(1, 2, ..., N\), ta định nghĩa \(p_k\) = \(F_{A_1} + F_{A_2} + ... + F_{A_k}\). Nhiệm vụ của bạn là hãy tính \(D_{p_k}\) \(∀\) \(k\) = \(1, 2, ... , N\). Vì kết quả rất lớn nên đáp án cuối cùng là \(D_{p_k}\) modulo \(10^9+7\).
Input
- Dòng thứ nhất là số nguyên dương \(N\), số phần tử của mảng \(A\).
- Dòng thứ hai gồm các số nguyên dương \(A_1, A_2, ... , A_N\).
Output
- Gồm \(N\) dòng, mỗi dòng là \(D_{p_k}\) modulo \(10^9+7\).
Scoring
- Subtask \(1\) (\(5\%\) số điểm): \(N, A_i \leq 15\).
- Subtask \(2\) (\(20\%\) số điểm): \(N, A_i \leq 100\).
- Subtask \(3\) (\(15\%\) số điểm): \(N \leq 100\), \(A_i\) là số chính phương.
- Subtask \(4\) (\(10\%\) số điểm): \(N \leq 100\), \(A_i\) không có giới hạn gì thêm.
- Subtask \(5\) (\(15\%\) số điểm): \(A_i\) là các số chẵn.
- Subtask \(6\) (\(35\%\) số điểm): \(N \leq 10^5, A_i \leq 10^9\)
Example
Test 1
Input
4
4 1 1 5
Output
2
2
1
2
Note
- \(p_1\) = \(F_4\) = 5
- \(p_2\) = \(F_4\) + \(F_1\) = 5 + 1 = 6
- \(p_3\) = \(F_4\) + \(F_1\) + \(F_1\) = 5 + 1 + 1 = 7
- \(p_3\) = \(F_4\) + \(F_1\) + \(F_1\) + \(F_5\) = 5 + 1 + 1 + 8 = 15
Vậy ta có:
- \(D_{P_1}\) = 2 (vì số 5 có thể biểu diễn bằng \(F_2 + F_3\) hay đơn giản là \(F_4\) )
- \(D_{P_2}\) = 2 (vì 6 = 1 + 5 = 1 + 2 + 3)
- \(D_{P_3}\) = 1 (vì số 7 chỉ có một cách biểu diễn duy nhất là 2 + 5)
- \(D_{P_4}\) = 2 (vì 15 = 2 + 13 = 2 + 5 + 😎
Bình luận