神奇的洛谷
查看原帖
神奇的洛谷
678019
SZX__HAPPY楼主2024/7/16 16:56

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(){
	//freopen("1.out","w",stdout);
	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

我***********

2024/7/16 16:56
加载中...