#include <iostream>
#include <vector>
using namespace std;
typedef vector<vector<long long>> Matrix;//定义一个n阶方阵
Matrix multiply(const Matrix& a, const Matrix& b, long long mod = 1e9 + 7) {
int n = a.size();//得到a的阶数
Matrix result(n, vector<long long>(n, 0));//构建一个全为0的n阶方阵
for (int i = 0; i < n; i++) {//对于result的每一行
for (int j = 0; j < n; j++) {//result的每一列
for (int k = 0; k < n; k++) {
result[i][j] = (result[i][j] + a[i][k] * b[k][j]) % mod;//a的行×b的列
}
}
}
return result;
}
Matrix matrix_power(Matrix mat, long long power, long long mod = 1e9 + 7) {
int n = mat.size();
Matrix result(n, vector<long long>(n, 0));
for (int i = 0; i < n; i++) {
result[i][i] = 1;
}
while (power > 0) {
if (power & 1) {
result = multiply(result, mat);
}
mat = multiply(mat, mat, mod);
power = power / 2;//核心思路:将乘方二进制分解,如果乘方是偶数,就将当前的数直接平方,乘方直接除以二,如果是奇数,直接乘自身,再按照偶数来算
}
return result;
}
int main()
{
// 请在此输入您的代码
Matrix F = { {1,1},{1,0} };
long long T;
cin >> T;
long long N[1000];
long long res[1000];
for (long long i = 0; i < T; i++) {
cin >> N[i];
res[i] = matrix_power(F, N[i])[1][0];
}
for (long long j = 0; j < T; j++) {
cout << res[j] << endl;
}
return 0;
}
太强了 不愧是精通c艹的睾手