本文共 2127 字,大约阅读时间需要 7 分钟。
给定一个N阶矩阵A,输出A的M次幂(M是非负整数)
例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开 样例输入 2 2 1 2 3 4 样例输出 7 10 15 22直接代码呈上:C语言
//注释里面有解释#include#include #define N 100int A[N][N],t[N][N],r[N][N];int main(){ int n,m,i,j,k; scanf("%d%d",&n,&m);//输入矩阵的阶数和幂次数 for(i=0;i
运行示例
C++:
#include#include #include using namespace std; int a[101][101]; int c[101][101]; int ans[101][101]; int main() { int i,j,k,l,m,n; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&a[i][j]); memset(ans,0,sizeof(ans)); for(i=1;i<=n;i++) ans[i][i]=1; for(k=1;k<=m;k++) { memset(c,0,sizeof(c)); for(i=1;i<=n;i++)for(j=1;j<=n;j++)for(l=1;l<=n;l++)c[i][j]+=ans[i][l]*a[l][j]; for(i=1;i<=n;i++)for(j=1;j<=n;j++)ans[i][j]=c[i][j]; } for(i=1;i<=n;i++) { for(j=1;j
JAVA:
import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str[] = br.readLine().split(" "); int Fir = Integer.parseInt(str[0]); int Sec = Integer.parseInt(str[1]); int[][] Mat = new int[Fir][Fir]; int[][] MatPro = new int[Fir][Fir]; for (int row_1 = 0; row_1 < Fir; row_1++) { String input[] = br.readLine().split(" "); for (int row_2 = 0; row_2 < Fir; row_2++) { Mat[row_1][row_2] = Integer.parseInt(input[row_2]); } } func(MatPro, Mat, Fir, Sec); } public static void func(int[][] MatPro, int[][] Mat, int a, int b) { int[][] tag = new int[a][a]; for (int x = 0; x < a; x++) { for (int y = 0; y < a; y++) { tag[x][y] = Mat[x][y]; } } if (b == 0) { for (int x = 0; x < a; x++) { for (int y = 0; y < a; y++) { if (x == y) { MatPro[x][y] = 1; } else { MatPro[x][y] = 0; } System.out.print(MatPro[x][y] + " "); } System.out.println(); }
转载地址:http://ljrzi.baihongyu.com/