为什么会MLE???
查看原帖
为什么会MLE???
211948
Hopearceus楼主2020/9/20 17:33
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#define mod 1000000007
using namespace std;
int n;
long long k;
struct node{
	int a[101][101];
	void cl(){
		memset(a,0,sizeof(a));
	}
}c,ans;
node operator *(node a,node b){
	node c;c.cl();
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=n;j++)
	    for(int k=1;k<=n;k++)
	      c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mod;
}
void ksm(long long k){
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=n;j++)
	    ans.a[i][j]=c.a[i][j];
	k--;
	while(k){
		if(k&1) ans=ans*c;
		k>>=1;
		c=c*c;
	}
	return;
}
int main()
{
	scanf("%d",&n);
	scanf("%lld",&k);
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=n;j++)
	    scanf("%d",&c.a[i][j]);
	ksm(k);
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++)
		  printf("%d ",ans.a[i][j]);
		putchar('\n');
	}
	return 0;
}

2020/9/20 17:33
加载中...