矩阵快速幂模板求条玄关
  • 板块灌水区
  • 楼主ChenZQ
  • 当前回复18
  • 已保存回复18
  • 发布时间2024/8/4 20:09
  • 上次更新2024/8/4 21:24:23
查看原帖
矩阵快速幂模板求条玄关
745358
ChenZQ楼主2024/8/4 20:09
#include <bits/stdc++.h>
using namespace std;

const int N = 101;
int a[N][N],ans[N][N],c[N][N];
int n,k;

int main()
{
	scanf("%d%d",&n,&k);
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&a[i][j]),ans[i][j]=1;
	while(k)
	{
		int p=k%2;
		if(p%2)
		{
			for(int k=1;k<=n;k++)
			{
				for(int i=1;i<=n;i++)
				{
					for(int j=1;j<=n;j++) c[i][j]+=(a[i][k]*a[k][j]);
				}
			}
			for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) ans[i][j]=c[i][j];
		}
		for(int k=1;k<=n;k++)
		{
			for(int i=1;i<=n;i++)
			{
				for(int j=1;j<=n;j++) c[i][j]+=(a[i][k]*a[k][j]);
			}
		}
		for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=c[i][j];
		k>>=1;
	}
	for(int i=1;i<=n;i++) 
	{
		for(int j=1;j<=n;j++) printf("%d ",ans[i][j]);
		puts("");
	}
}
2024/8/4 20:09
加载中...