求助!!!!!!!!!!!!
查看原帖
求助!!!!!!!!!!!!
1394374
liangchenrui54088楼主2024/8/9 16:25
#include<bits/stdc++.h> 
#define p 30011
using namespace std;
int read()
{
	int xsef = 0,yagx = 1;char cejt = getchar();
	while(cejt < '0'||cejt > '9'){if(cejt == '-')yagx = -1;cejt = getchar();}
	while(cejt >= '0'&&cejt <= '9'){xsef = (xsef << 1) + (xsef << 3) + cejt - '0';cejt = getchar();}
	return xsef * yagx;
}
int n,m;
struct node{
	int a[110][110];
	node(){
		memset(a, 0, sizeof(a));
	}
}b,c,d;
node operator * (node x, node y){
	node z;
	for(int i = 1;i <= n * 2;i++){
		for(int j = 1;j <= n * 2;j++){
			for(int k = 1;k <= n * 2;k++){
				z.a[i][j] = (z.a[i][j] + x.a[i][k] * y.a[k][j]) % p;
			}
		}
	}
	return z;
}
void build(){
	for(int i=1;i<=n;i++){
			if(i!=1)
				b.a[i][i-1]=1;
			b.a[i][i]=1;
			if(i!=n)
				b.a[i][i+1]=1;
		}
	for(int i=1;i<=n;i++){
		b.a[i][i+n]=1;
	}
	for(int i=1;i<=n;i++){
		b.a[i+n][i]=1;
	}
}
void ksm(){
	while(m){
		if(m&1)
			c=c*b;
		b=b*b;
		m>>=1;
	}
}
signed main(){
	n=read(),m=read();
	build();
	d = b;
	m-=2;
	for(int i=1;i<=n*2;i++)
		c.a[i][i]=1;
	ksm();
	int ans = -c.a[1][n+n];
	c=c*d;
	ans += c.a[1][n];
	printf("%d",ans + p % p);
	return 0
}
为什么编译错误?
2024/8/9 16:25
加载中...