DP的蒟蒻,WA,求debug
查看原帖
DP的蒟蒻,WA,求debug
1451441
Mii2308楼主2025/8/2 09:56
#include<iostream>
using namespace std;
using ll=long long;
ll n,m,p,q,r,t,u,v,w,x,y,z;
struct Matrix{
	ll a[11][11];
	Matrix(){
		for(int i=0;i<11;i++){
			for(int j=0;j<11;j++){
				a[i][j]=0;
			}
		}
	}
	inline void init1(){
		for(int i=0;i<11;i++){a[i][0]=1;}
		a[0][0]=a[2][0]=a[4][0]=3;
		a[9][0]=w;a[10][0]=z;
	}
	inline void init2(){
		a[0][0]=p;a[0][1]=q;a[0][2]=a[0][4]=a[0][8]=1;a[0][7]=t;a[0][6]=r;
		a[1][0]=a[2][0]=a[2][4]=a[2][9]=1;a[2][2]=u;a[2][3]=v;
		a[3][2]=a[4][0]=a[4][2]=a[4][7]=a[4][10]=1;a[4][4]=x;a[4][5]=y;a[4][8]=2;
		a[5][4]=a[6][6]=1;a[6][7]=2;a[6][8]=1;a[7][7]=a[7][8]=a[8][8]=1;
		a[9][9]=w;a[10][10]=z;
	}
}mu,v1;
inline Matrix operator*(Matrix a,Matrix b){
	Matrix c;
	for(int i=0;i<11;i++){
		for(int j=0;j<11;j++){
			for(int k=0;k<11;k++){
				c.a[i][j]+=a.a[i][k]*b.a[k][j]%m;
				c.a[i][j]%=m;
			}
		}
	}
	return c;
}
inline Matrix pow(Matrix a,int k){
	Matrix c;
	for(int i=0;i<11;i++){c.a[i][i]=1;}
	while(k){
		if(k&1) c=c*a;
		a=a*a;k>>=1;
	}
	return c;
}
int main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);std::cout.tie(0);
	cin>>n>>m>>p>>q>>r>>t>>u>>v>>w>>x>>y>>z;
	if(n==1||n==2&&m==2){cout<<"nodgd 1\nCiocio 1\nNicole1";return 0;}
	else if(n==2&&m==3){cout<<"nodgd 0\nCiocio 0\nNicole0";return 0;}
	v1.init1();mu.init2();
	Matrix vans=v1*pow(mu,n-2);
	int ans1=vans.a[0][0],ans2=vans.a[2][0],ans3=vans.a[4][0];
	cout<<"nodgd "<<ans1<<"\nCiocio "<<ans2<<"\nNicole "<<ans3;
	return 0;
}
2025/8/2 09:56
加载中...