如题,谢谢。
#include <bits/stdc++.h>
#define int long long
const int Mod=1e9+7;
using namespace std;
void mul(long long a[4],long long b[4][4]){
long long c[4]; memset(c,0ll,sizeof(c));
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
c[i]=(c[i]+a[j]*b[j][i]%Mod)%Mod;
memcpy(a,c,sizeof(c));
}
void mulself(long long a[4][4]){
long long c[4][4]; memset(c,0ll,sizeof(c));
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
for(int k=0;k<4;k++)
c[i][j]=(c[i][j]+a[i][k]*a[k][j]%Mod)%Mod;
memcpy(a,c,sizeof(c));
}
void PowerMod(long long b){
long long ans[4]={0,1,0,1};
long long a[4][4]={{0,1,0,1},{1,1,0,1},{0,0,0,1},{0,0,1,1}};
while(b){
if(b%2ll) mul(ans,a);
b/=2ll,mulself(a);
}
long long Ans=(2ll*((ans[3]-(ans[0]+ans[1]*2ll%Mod)%Mod+1ll)%Mod))%Mod;
cout<<Ans<<endl;
}
void solve()
{
int n;
cin>>n;
if(n<3){
cout<<0<<endl; return;
}
ans=(ans+fib(i)*fib(n-i+1))%Mod; cout<<(ans-fib(n+2)+1)*2%Mod<<endl;
PowerMod(n-1);
}
signed main(){
int T; cin>>T;
while(T--) solve();
return 0;
}