// |A| * A- = A* (伴随矩阵) = 逆矩阵 * 矩阵的值

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<iostream>
#include<algorithm>
using namespace std; const int MAXN = ;
const int Mod = ;
int a[MAXN][MAXN], b[MAXN][MAXN]; int fast_pow(int a, int k){
int res = ;
while(k){
if(k & ) res = 1LL * res * a % Mod;
a = 1LL * a * a % Mod;
k >>= ;
}
return res;
} void solve(int n){
for(int i = ; i <= n; i++){
for(int j = ; j <= n; j++){
b[i][j] = (i==j);//初始 b 为单位矩阵
}
} int det = ;
for(int i = ; i <= n; i++){
int t = i;
for(int k = i; k <= n; k++){
if(a[k][i]) t = k;
} if(t != i) det *= -;
for(int j = ; j <= n; j++){
swap(a[i][j], a[t][j]);
swap(b[i][j], b[t][j]);
} det = 1LL * a[i][i] * det % Mod;
int inv = fast_pow(a[i][i], Mod-); // a[i][i] 的逆元 for(int j = ; j <= n; j++){
a[i][j] = 1LL * inv * a[i][j] % Mod;
b[i][j] = 1LL * inv * b[i][j] % Mod;
}
for(int k = ; k <= n; k++){
if(k == i) continue;
int tmp = a[k][i];
for(int j = ; j <= n; j++){
a[k][j] = (a[k][j] - 1LL * a[i][j] * tmp % Mod + Mod) % Mod;
b[k][j] = (b[k][j] - 1LL * b[i][j] * tmp % Mod + Mod) % Mod;
}
}
}
//经过增广矩阵初等变换,此时 b 为 a 的逆矩阵
det = (det + Mod) % Mod; // |a| % Mod
for(int i = ; i <= n; i++){
for(int j = ; j<= n; j++){
b[i][j] = 1LL * det * b[i][j] % Mod; // 将 b 由逆矩阵变成伴随矩阵
}
}
} int main(void){
int n;
while(scanf("%d",&n)!=EOF){
for(int i = ; i <= n; i++)
for(int j = ; j <= n; j++)
scanf("%d", &a[i][j]);
solve(n);
for(int i = ; i <= n; i++)
printf("%d%c",(i & ? b[i][] : (Mod - b[i][]) % Mod), " \n" [i == n]);
}
return ;
}

时间复杂度为 O(n^3)

初等变换求 |A| % Mod & A- % Mod & A* % Mod(模板)的更多相关文章

  1. n对mod求模整除时转化成mod的数学式

    n对mod求模,它的值在0到mod-1之间,如果要求模整除的时候转化成mod可以用下面的式子: n = (n - 1 % mod + mod) % mod +1 这里先减一,模上mod再加一,这样如果 ...

  2. 求a^b的约数对mod取模

    +; int prime[maxn]; void marktable(int n){ memset(prime,,sizeof(prime)); ;i<=n;i++){ ]]=i; ;j< ...

  3. HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)

    最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...

  4. hdu 3068 最长回文 【Manacher求最长回文子串,模板题】

    欢迎关注__Xiong的博客: http://blog.csdn.net/acmore_xiong?viewmode=list 最长回文                                 ...

  5. bsgs+求数列通项——bzoj3122(进阶指南模板该进)

    /* 已知递推数列 F[i]=a*F[i-1]+b (%c) 解方程F[x]=t an+1 = b*an + c an+1 + c/(b-1) = b(an + c/(b-1)) an+1 + c/( ...

  6. 850. Dijkstra求最短路 II(堆优化模板)

    给定一个n个点m条边的有向图,图中可能存在重边和自环,所有边权均为非负值. 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出-1. 输入格式 第一行包含整数n和m. 接下来m行每行 ...

  7. 求第N个回文数 模板

    备忘. /*看到n可以取到2*10^9.说明普通方法一个个暴力计算肯定会超时的,那打表呢?打表我们要先写个打表的代码,这里不提供.打完表观察数据,我们会发现数据其实是有规律的.完全不需要暴力的把所有数 ...

  8. HLG 1494网络 (求的割点数目)可做模板

    网络 Time Limit: 1000 MS Memory Limit: 65535 K Total Submit: 103(32 users) Total Accepted: 54(31 users ...

  9. manacher求最长回文子串算法模板

    #include <iostream> #include <cstring> #include <cstdlib> #include <stdio.h> ...

随机推荐

  1. 分享知识-快乐自己:揭秘HDFS

    揭秘HDFS: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘HBas ...

  2. Java集合类--->入门上篇

    最近我又在研究Java语言,这是第五次还是第六次学习Java的集合类,你也许会惊讶为什么这么多次?哈哈,因为之前的我没有记录下来,忘记了,当然最主要还是觉得自己毅力不够,没有坚持.那么,这次我将换一种 ...

  3. Building Performant Expand & Collapse Animations

    t's starting to be pretty common knowledge that there are only 2 things you can animate cheaply in C ...

  4. UI层自动化测试介绍

    UI指的是用户可以用肉眼可以看到的页面. UI层自动化测试的原理.不论是web端还是移动端,原理都是一样的,就是基于页面元素的识别和定位来进行模拟用户行为. 首先识别到某个元素,比如一个按钮,然后定义 ...

  5. Java_JS_01_java调用js

    二.资源帖 1.JAVA执行javascript方法 2.在Java中直接调用js代码 3.Java执行js脚本 4.Java 8 Nashorn 教程 5.Java 脚本引擎

  6. BEC listen and translation exercise 42

    These were built for the workers towards the end of the eighteenth century, and they are still furni ...

  7. 机器学习 Support Vector Machines 1

    引言 这一讲及接下来的几讲,我们要介绍supervised learning 算法中最好的算法之一:Support Vector Machines (SVM,支持向量机).为了介绍支持向量机,我们先讨 ...

  8. [原]NYOJ-子串和44

    大学生程序代写 /*子串和 时间限制:5000 ms  |  内存限制:65535 KB 难度:3 描述 给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使 ...

  9. C++函数重载详解

    我们在开瓶瓶罐罐的时候,经常会遭遇因各种瓶口规格不同而找不到合适的工具的尴尬.所以有时候就为了开个瓶,家里要备多种规格的开瓶器.同样是开个瓶子嘛,何必这么麻烦?于是有人发明了多功能开瓶器,不管啤酒瓶汽 ...

  10. 动态调试smali代码学习记录

    预备知识 DDMS Dalvik Debug Monitor Serivce,Dalvik调试监控服务,为Android SDK提供的一款拥有监控Dalvik虚拟机的调试软件,启动文件位于<An ...