30 特殊的矩阵运算

30 特殊的矩阵运算

作者: 卢婷时间限制: 1S章节: 二维数组

问题描述 :

输入m个方阵,方阵的元素是非0整数。对于n阶方阵A,明明现在需要进行特殊的运算。

例如:

A: 5 1 3

5 8 7

2 6 9

方阵A有两条对角线:从左上角到右下角的对角线,元素为5 8 9,以及从左下角到右上角的对角线,元素为2 8 3。

求A两条对角线元素相乘的和(对角线积),52+88+9*3=101;

求A两条对角线元素相除的和(对角线商):5/2+8/8+9/3=6。 (注意:求对角线商时用整除,所以5/2的结果为2。)

输入说明 :

输入由多组数据组成。

  1. 第一行有一个整数m,表示接下来有m组测试数据;
    
  2. 第二行有一个整数n,表示n阶方阵,0 < n < 10;
    
  3. 接下来的m行,每行有n*n个非0整数,整数间用空格分隔,每行对应一个矩阵。例如上述方阵A的输入格式为:5 1 3 5 8 7 2 6 9
    

输出说明 :

对每个矩阵,输出两个整数,表示对角线积和对角线商,用空格分隔。每个矩阵的输出结果占一行。

输入范例 :

2
3
5 1 3 5 8 7 2 6 9
-2 3 2 1 2 49 22 1 2
输出范例 :

101 6
-36 2

import java.util.Scanner;

public class test_30 {
    /**
     * 30 特殊的矩阵运算
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        sc.nextLine();
        int m = sc.nextInt();
        sc.nextLine();
        String[] split;
        int[][] a = new int[m][m];
        int[] b = new int[m];
        int[] c = new int[m];
        int mutil,div,count,x,y;
        while(n-->0){
            split = sc.nextLine().trim().split(" ");
            x=0;
            y=m-1;
            mutil=0;
            div=0;
            count=0;
            for (int j = 0; j < m; j++) {
                for (int k = 0; k < m; k++) {
                    if(j==k){
                        b[x++]=Integer.valueOf(split[count]);
                    }
                    if(j+k==m-1){
                        c[y--]=Integer.valueOf(split[count]);
                    }
                    a[j][k] = Integer.valueOf(split[count++]);
                }
            }
            for (int i = 0; i < m; i++) {
                mutil+=b[i]*c[i];
                div+=b[i]/c[i];
            }
            System.out.println(mutil+" "+div);
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值