链接: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;
}