不知道哪错了
查看原帖
不知道哪错了
223103
苏幕遮楼主2021/5/15 10:33
#include <bits/stdc++.h>
using namespace std;
long long n, k;
struct node
{
	long long x[105][105];
};
long long int read()
{
	int f = 1, sum=0;
	char ch;
	ch = getchar();
	while (ch < '0' || ch > '9')
	{
		if (ch == '-') f = -1;
		ch = getchar();
	}
	while (ch >= '0' && ch <='9')
	{
		sum = sum * 10 + (ch - '0');
		ch = getchar();
	}
	return sum * f;
}
node operator * (node &aa, node &bb)
{
	node zz;
	for (int z = 1;z <= n;z++)
	{
		for (int i = 1;i <= n;i++)
		{
			for (int j = 1;j <= n;j++)
			{
			
				zz.x[i][j] = (zz.x[i][j] + aa.x [i][z] * bb.x [z][j] % 1000000007) % 1000000007;
			
			}
		}
	}
	return zz;
}
int main()
{
	n = read();
	k = read();
	node ans;
	node a;
	for (int i = 1;i <= n;i++)
	{
		ans.x[i][i] = 1;
	}
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			a.x[i][j] = read();
		}
	}
	
	do{    
		if(k&1)ans=ans*a;
		a=a*a;k>>=1;
	}while(k);
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= n;j++)
		{
			cout << ans.x[i][j] << " ";
		}
		cout << endl;
	}
	return 0;
}
2021/5/15 10:33
加载中...