行列式求值

该博客探讨如何计算n×n矩阵的行列式并对p取模。通过转化为上三角矩阵并应用辗转相除法避免精度问题。当矩阵变为上三角形后,行列式的值是对角线上元素的乘积。若对角线上出现0,则行列式为0。内容涉及矩阵性质、逆序对计数和高斯消元的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给一个n×n的矩阵A,请求出detA对p取模后的值。

输入格式:
第一行,两个整数n(1≤n≤200),p(1≤p≤109);
接下来n行,每行n个数,第i+1行第j个数表示Ai,j(0≤|Ai,j|≤109)。
输出格式:
一个数,表示答案。
样例输入:
2 4
5 2
-2 7
样例输出:
3
数据范围:
对于10%的数据,n=2;
另有30%的数据,n≤50;
另有40%的数据,p为质数。
时间限制:
1s
空间限制:
64MB

http://blog.youkuaiyun.com/zhoufenqin/article/details/7779707
该博客剖析的透彻,我们是利用矩阵的性质A把它转化成上三角来解决,如果直接除的话要用double,计算机有精度问题,会被卡死,所以我们用类似辗转相除的思想来解决这个问题,注意交换是要将行列式变号的,所以我们就辗转完了之后,看他在不在原来的位置上,若不在,说明换了奇数次,dance抑或1之后换回来就行了,比较水。
试验了一下C++的取余操作,并且重拾了对拍。
计算行列式的基本方法就是把矩阵化成上三角或下三角,然后观察对角线的元素,如果其中有个一元素为0则整体为0,否则行列式的值就是对角线上各个元素的乘积。
具体行列式性质见那篇博客。
行列式的定义是:在一个矩阵中,编号为1-n的行号,列号全排列一个个枚举过去,考虑该排列中逆序对的个数

若为奇,答案加上负的这n个矩阵上对应数的乘积
若为偶,答案加上整的这n个矩阵上对应数的乘积
很像高斯消元但完全不是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值