求调矩阵快速幂
  • 板块学术版
  • 楼主CSP_zyh
  • 当前回复14
  • 已保存回复14
  • 发布时间2023/8/29 09:47
  • 上次更新2023/11/3 00:35:06
查看原帖
求调矩阵快速幂
549886
CSP_zyh楼主2023/8/29 09:47

链接

貌似没错啊qwq

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,k;
ll f[105][105];
ll x[105][105];
ll mod=10e9+7;
void quickPower(ll k){
	while(k!=0){
		if(k&1){
			for(ll i=1;i<=n;i++){
				for(ll j=1;j<=n;j++){
					for(ll k=1;k<=n;k++){
						f[i][j]=(f[i][j]+(f[k][j]*x[i][k])%mod)%mod;
					}
				}
			}
		}
		for(ll i=1;i<=n;i++){
			for(ll j=1;j<=n;j++){
				for(ll k=1;k<=n;k++){
					x[i][j]=(x[i][j]+(x[k][j]*x[i][k])%mod)%mod;
				}
			}
		} 
		k>>=1;
	}
}
int main(){
	cin>>n>>k;
	for(ll i=1;i<=n;i++){
		for(ll j=1;j<=n;j++){
			cin>>f[i][j];
			x[i][j]=f[i][j];
		}
	}
	quickPower(k-1);
	for(ll i=1;i<=n;i++){
		for(ll j=1;j<=n;j++){
			cout<<f[i][j]%mod<<" ";
		} 
		cout<<endl;
	}
	return 0;
}

2023/8/29 09:47
加载中...