求大佬解惑
查看原帖
求大佬解惑
1232614
www0_0楼主2024/5/4 14:18

十分奇怪

#include<bits/stdc++.h>
#define int long long
#define M 1000000007
using namespace std;
struct matrix{
	int a[5][5];
	matrix operator *(matrix b){
		matrix c;
		memset(c.a,0,sizeof(c.a));
		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]=(c.a[i][j]+a[i][k]*b.a[k][j])%M;
				}
			}
		}
		return c;
	}
};
matrix qb(matrix hh,int b){
	matrix now=hh,ret;
	memset(ret.a,0,sizeof(ret.a));
	for(int i=1;i<=3;i++) ret.a[i][i]=1;
	while(b){
		if(b&1) ret=ret*now;
		now=now*now;
		b>>=1;
	}
	return ret;
}
signed main(){
	int T;
	cin>>T;
	while(T--){
		int n;
		cin>>n;
		/*if(n<=3){
			cout<<1;
			continue;
		}*/
		matrix hh;
		hh.a[1][1]=hh.a[1][3]=hh.a[2][1]=hh.a[3][2]=1;
		hh.a[1][2]=hh.a[2][2]=hh.a[2][3]=hh.a[3][1]=hh.a[3][3]=0;
		matrix b=qb(hh,n-1);
		cout<<b.a[1][1]<<endl;
	}
	return 0;
}`````

这是过了的代码

但是我觉得main函数里的
```cpp
/*if(n<=3){
			cout<<1;
			continue;
		}*/

不应被注释掉

但是没注释80pts 注释了就AC了??

why求大佬解惑

2024/5/4 14:18
加载中...