P1939 代码如下
#include<bits/stdc++.h>
using namespace std;
const int mo=100000007;
int t;
struct matrix{
long long a[4][4];
matrix(){
memset(a,0,sizeof(a));
}
};
matrix shulie;
matrix juzhen;
matrix operator*(matrix A,matrix B){
matrix C;
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
for(int k=1;k<=3;k++){
C.a[i][j]+=(A.a[i][k]*B.a[k][j])%mo;
C.a[i][j]%=mo;
}
}
}
return C;
}
inline void fuzhi(){
shulie.a[1][1]=shulie.a[1][2]=shulie.a[1][3]=1;
juzhen.a[1][1]=juzhen.a[1][2]=juzhen.a[2][3]=juzhen.a[3][1]=1;
}
inline void binpow(int b){
while(b>0){
if(b&1)shulie=shulie*juzhen;
juzhen=juzhen*juzhen;
b>>=1;
}
}
int main(){
cin>>t;
for(int i=1;i<=t;i++){
int n;
cin>>n;
if(n<=3) printf("1\n");
else{
fuzhi();
binpow(n-3);
printf("%lld\n",shulie.a[1][1]%mo);
}
}
return 0;
}
检查不出哪里有误,请各位大佬帮忙看下