玄关求助
  • 板块学术版
  • 楼主HAha20120522
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/30 12:58
  • 上次更新2024/6/30 16:30:59
查看原帖
玄关求助
892365
HAha20120522楼主2024/6/30 12:58

给定一个N阶矩阵A,输出A的M次幂(M是非负整数)

#include<iostream>
using namespace std;
int N,M;
long long a[30][30],b[30][30],c[30][30];
void mult(int N,int M){
	for(int p = 1;p < M; p++){
		for(int i = 0; i < N; i++) {
			for(int j = 0; j < N; j++){
				long long t = 0;
				for(int k = 0; k < N; k++){
					t += a[i][k] * b[k][j];
					c[i][j] = t;
				}
			}
		}
		for(int i = 0; i < N; i++)
			for(int j = 0; j < N; j++)
				b[i][j] = c[i][j];
	}

}

int main() {
	cin >> N >> M;
	for(int i = 0; i < N; i++) {
		for(int j = 0; j < N; j++) {
			cin >> a[i][j];
			c[i][j] = b[i][j] = a[i][j];
		}
	}
	if(M == 0){
		for(int i = 0; i < N; i++)
			for(int j = 0;j < N; j++)
				if(i == j)	c[i][j] = 1;
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++) {
				cout << c[i][j] << " ";
		cout << endl;
			}
		}
	}else if(M == 1){
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++) {
				cout << a[i][j] << " ";
			cout << endl;
			}
		}
	}else {
		mult(N,M);
		for(int i = 0; i < N; i++){
			for(int j = 0; j < N; j++)
				cout << c[i][j] << " ";
			cout << endl;
		}
	}
	return 0;
}

不知道哪错了,求助。(83分)

2024/6/30 12:58
加载中...