zoukankan      html  css  js  c++  java
  • 模板——行列式

    正常计算行列式以及模意义下通用的行列式模板,时间复杂度$n^3log(n)$

     1 const int N=500;
     2 
     3 ll a[N][N];
     4 
     5 int n,mod;
     6 
     7 inline ll det(){
     8     ll res=1;
     9     for(int i=0;i<n;++i){
    10         if(!a[i][i]){
    11             bool flag=false;
    12             for(int j=i+1;j<n;++j){
    13                 if(a[j][i]){
    14                     flag=true;
    15                     for(int k=i;k<n;++k) swap(a[i][k],a[j][k]);
    16                     res=-res;
    17                     break;
    18                 }
    19             }        
    20             if(!flag) return 0;
    21         }
    22         for(int j=i+1;j<n;++j){
    23             while(a[j][i]){
    24                 ll t=a[i][i]/a[j][i];
    25                 for(int k=i;k<n;++k){
    26                     a[i][k]=(a[i][k]-t*a[j][k])%mod;
    27                     swap(a[i][k],a[j][k]);
    28                 }
    29                 res=-res;
    30             }
    31         }
    32         res*=a[i][i];
    33         res%=mod;//模意义下的语句,不是模意义则不加
    34     }
    35     if(res<0)   res+=mod;
    36     // printf("res=%lld",res);
    37     return res;
    38 }
  • 相关阅读:
    团队冲刺2.6
    团队冲刺2.5
    团队冲刺2.4
    团队冲刺2.3
    个人作业二
    个人作业二
    个人作业二
    课程总结
    每日博客
    每日博客
  • 原文地址:https://www.cnblogs.com/Troywar/p/8182044.html
Copyright © 2011-2022 走看看