哈尔滨工程大学ACM预热赛——B坑坑的伴随阵(牛客)

链接:https://ac.nowcoder.com/acm/contest/554/B
来源:牛客网
 

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

坑坑马上就要毕业了,但是在毕业之前需要完成毕业设计才能顺利毕业,可是坑坑的毕设题目很难,是有关图像处理的,涉及到矩阵方面的知识,对数学要求很高。坑坑在研究毕设的时候遇到了一个难题,需要通过今天的比赛发现好的解题方法,希望大家可以帮忙。需要解决的问题是这样的,有一个矩阵A,它是3*3的方阵,现在需要编程实现计算矩阵|A*|(矩阵A对应的伴随阵的行列式的值),矩阵中的每个元素值都在0~255之间。

输入描述:

输入数据为T组数据(1<=T<=10)。
每组数据有三行,每行三个数字,表示矩阵A中的元素值(0<=元素值<=255)。

输出描述:

对于每组数据,输出一个数字,表示矩阵A对应的伴随阵的行列式的值。

示例1

输入

复制

2
1 0 0
0 1 0
0 0 1
0 0 1
0 1 0
1 0 0

输出

复制

1
1

思路:求伴随矩阵的值,用公式|A*|A*|=|A|^(n-1)A*|=|A|^(n-1),n代表了阶数。

代码:

#include<set>
#include<map>
#include<cmath>
#include<cstdio>
#include<string>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int s[4][4];
int a[4][4];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        for(int i=1; i<=3; i++)
            for(int j=1; j<=3; j++)
                scanf("%d",&a[i][j]);
        long long  sum=a[1][1]*a[2][2]*a[3][3]+a[1][2]*a[2][3]*a[3][1]+a[1][3]*a[2][1]*a[3][2]-a[1][3]*a[2][2]*a[3][1]-a[1][2]*a[2][1]*a[3][3]-a[2][3]*a[3][2]*a[1][1];
        printf("%lld\n",sum*sum);
    }

    return 0;
}

猜你喜欢

转载自blog.csdn.net/shinian_acmer/article/details/89004838