非常抱歉,这篇文章鸽了。真的没时间写了。
#includeusing namespace std;typedef long long ll;#define cp complex #define pi acosl(-1)const int N=6e5+7;struct mat{ll a[5][5];}A1,A2;ll n,k,l,X,Y,mod,w,nn,ans[N],a1[N],a2[N],R[N];cp A[N],B[N],C[N],D[N],E[N],F[N],G[N];ll qpow(ll a,ll b){ ll ret=1; while(b) { if(b&1)ret=ret*a%mod; a=a*a%mod,b>>=1; } return ret;}mat operator*(mat a,mat b){ mat c; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { c.a[i][j]=0; for(int k=1;k<=n;k++)c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mod; } return c;}mat qpow(mat a,ll b){ mat ret={ 0}; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i==j)ret.a[i][j]=1; while(b) { if(b&1)ret=ret*a; a=a*a,b>>=1; } return ret;}ll getrt(ll x){ vector vec;vec.clear(); for(ll i=2;i*i<=(x-1);i++)if((x-1)%i==0)vec.push_back(i),vec.push_back((x-1)/i); for(ll i=2;;i++) { bool c=1; for(unsigned j=0;j >n>>k>>l>>X>>Y>>mod; for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cin>>A1.a[i][j]; w=qpow(getrt(mod),(mod-1)/k); for(int j=0;j >1]>>1)|((i&1)<