萌新求助
查看原帖
萌新求助
137723
pencil楼主2021/8/19 17:22
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
using namespace std;
const long long mod=1000000007;
struct az {
	long long o[110][110];
};
az a,b,ans;
long long n,k;
az suan(az a,az b) {
	az ans;
	memset(ans.o,0,sizeof(ans.o));
	long long int i,j,p;
	for(i=1; i<=n; i++) {
		for(j=1; j<=n; j++) {
			for(p=1; p<=n; p++) {
				ans.o[i][j]=ans.o[i][j]%mod+(a.o[i][p]*b.o[p][j])%mod;
//				ans.o[i][j]%=mod;
			}
		}
	}
	return ans;
}
void po() {
	b=a;k--;
	while(k&1) {
		if(k&1)
			a=suan(a,b);
		b=suan(b,b);
		k>>=1;
	}
}
int main() {
	long long i,j;
	cin>>n>>k;
	for(i=1; i<=n; i++) {
		for(j=1; j<=n; j++) {
			cin>>a.o[i][j];
		}
	}
	po();
	for(i=1; i<=n; i++) {
		for(j=1; j<=n; j++) {
			cout<<a.o[i][j]%mod<<" ";
		}
		cout<<endl;
	}
	return 0;
}
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#include<algorithm>
#include<climits>
using namespace std;
const long long mod=1000000007;
struct az {
	long long o[110][110];
};
az a,b,ans;
long long n,k;
az suan(az a,az b) {
	az ans;
	memset(ans.o,0,sizeof(ans.o));
	long long int i,j,p;
	for(i=1; i<=n; i++) {
		for(j=1; j<=n; j++) {
			for(p=1; p<=n; p++) {
				ans.o[i][j]=ans.o[i][j]%mod+(a.o[i][p]*b.o[p][j])%mod;
//				ans.o[i][j]%=mod;
			}
		}
	}
	return ans;
}
void po() {
	b=a;k--;
	while(k&1) {
		if(k&1)
			a=suan(a,b);
		b=suan(b,b);
		k>>=1;
	}
}
int main() {
	long long i,j;
	cin>>n>>k;
	for(i=1; i<=n; i++) {
		for(j=1; j<=n; j++) {
			cin>>a.o[i][j];
		}
	}
	po();
	for(i=1; i<=n; i++) {
		for(j=1; j<=n; j++) {
			cout<<a.o[i][j]%mod<<" ";
		}
		cout<<endl;
	}
	return 0;
}

别骂了别骂了,已经重改过了QWQ

2021/8/19 17:22
加载中...