RE,求条,玄关
查看原帖
RE,求条,玄关
705296
miffy_123楼主2024/3/23 11:56
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 2147483646
#define inf 9223372036854775806
#define pl putchar('\n');
#define mod 1000000007
struct squa{
	long long n;
	long long a[100][100];
	squa operator* (const squa &b){
		squa c;
		c.n=n;
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				for(int r=0;r<n;r++){
					c.a[i][j]+=a[i][r]*b.a[r][j];
					c.a[i][j]%=mod;
				}
			}
		}
		return c;
	}
	void operator= (const squa &b){
		this->n=b.n;
		for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
				this->a[i][j]=b.a[i][j];
			}
		}
		return;
	}
}a,b,ans;
squa qpow(squa A,long long k){
	if(k==0){
		return b;
	}
	if(k==1){
		return A;
	}
	if(k&1){
		return A*qpow(A,k/2)*qpow(A,k/2);
	}
	else{
		return qpow(A,k/2)*qpow(A,k/2);
	}
}
int main(){
    long long k,n;
	cin>>n>>k;
	a.n=n;
	b.n=n;
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cin>>a.a[i][j];
			if(i==j){
				b.a[i][j]=1;
			}
			else{
				b.a[i][j]=0;
			}
		}
	}
	ans=qpow(a,k);
	for(int i=0;i<n;i++){
		for(int j=0;j<n;j++){
			cout<<ans.a[i][j]<<" ";
		}
		cout<<endl;
	}
    return 0;
}


2024/3/23 11:56
加载中...