求解!!!
  • 板块灌水区
  • 楼主xiao999yao
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/20 17:48
  • 上次更新2024/8/20 20:33:20
查看原帖
求解!!!
1062722
xiao999yao楼主2024/8/20 17:48

P3390 矩阵快速幂

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,a[105][105];
inline int read(){
	int a=0;int f=0;char p=getchar();
	while(!isdigit(p)){f|=p=='-';p=getchar();}
	while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p=getchar();}
	return f?-a:a;
}
int mi(int a,int k,int x,int y){
	if(k==0)return 1;
	if(k==1)return a;
	if(k%2==1)return mi(a,k/2,x,y)*mi(a,k/2,x,y)*a;
	if(k%2==0)return mi(a,k/2,x,y)*mi(a,k/2,x,y);
}
void cheng(){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			a[i][j]=mi(a[i][j],k,i,j);
		}
	}
}
signed main(){
	n=read();
	k=read();
	if(k==0){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				printf("%lld ",i==j);
			}
			printf("\n");
		}
		return 0;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			a[i][j]=read();
		}
	}
	cheng();
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			printf("%lld ",a[i][j]);
		}
		printf("\n");
	}
	return 0;
}

为什么TLE90啊。。。

2024/8/20 17:48
加载中...