This is 我的代码
#include<bits/stdc++.h>
using namespace std;
long long t,n,mod=1e9+7,a[5][5],ans[5][5],c[5][5];
void fastc(long long a[][5],long long b[][5],long long num){
for(int i=1;i<=num;i++){
for(int j=1;j<=num;j++){
c[i][j]=0;
for(int k=1;k<=num;k++){
c[i][j]=(c[i][j]+a[i][k]*b[k][j]%mod)%mod;
}
}
}
for(int i=1;i<=num;i++){
for(int j=1;j<=num;j++){
a[i][j]=c[i][j];
}
}
}
int main(){
cin>>t;
for(int i=1;i<=t;i++){
scanf("%lld",&n);
if(n<=3){
printf("1\n");
continue;
}
ans[1][1]=1;
ans[1][2]=1;
ans[1][3]=1;
a[1][1]=0;
a[1][2]=0;
a[1][3]=1;
a[2][1]=1;
a[2][2]=0;
a[2][3]=0;
a[3][1]=0;
a[3][2]=1;
a[3][3]=1;
n-=3;
while(n){
if(n&1) fastc(ans,a,5ll);
fastc(a,a,5ll);
n>>=1;
}
printf("%lld\n",ans[1][3]);
}
return 0;
}
This is 测试点1读入
10
39
20
39
38
56
98
66
86
51
13
This is 测试点1输出
1243524
872
1243524
848491
825604416
795935567
743426048
369866299
122106097
60
This is 我的测试点1输出
1243524
872
1243524
848491
825604416
795935567
743426048
369866299
122106097
60
洛谷: Too short on line 1.
我:WA 0pts
我***********