zoukankan      html  css  js  c++  java
  • Day 4 测试(QwQ 表示没考好 未完待续。。。 可能要过一段时间才会更

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<cstdlib>
     7 #define LL long long
     8 using namespace std;
     9 LL mod;
    10 LL a[410][410];
    11 int n,is[410],js[410];
    12 void exgcd(int a,int b,int &x,int &y){
    13     if(!b)return x=1,y=0,void();
    14     exgcd(b,a%b,y,x);y-=x*(a/b);
    15 }
    16 int inv(int p){
    17     int x,y;exgcd(p,mod,x,y);
    18     return (x+mod)%mod;
    19 }
    20 void inv(){
    21     for(int k=1;k<=n;k++){
    22         for(int i=k;i<=n;i++) 
    23             for(int j=k;j<=n;j++)if(a[i][j]){
    24                 is[k]=i,js[k]=j;break;
    25             }
    26         for(int i=1;i<=n;i++) 
    27             swap(a[k][i],a[is[k]][i]);
    28         for(int i=1;i<=n;i++)
    29             swap(a[i][k],a[i][js[k]]);
    30         if(!a[k][k]){
    31             puts("No Solution");
    32             exit(0);
    33         }
    34         a[k][k]=inv(a[k][k]); 
    35         for(int j=1;j<=n;j++)if(j!=k) 
    36             (a[k][j]*=a[k][k])%=mod;
    37         for(int i=1;i<=n;i++)if(i!=k) 
    38             for(int j=1;j<=n;j++)if(j!=k)
    39                 (a[i][j]+=mod-a[i][k]*a[k][j]%mod)%=mod;
    40         for(int i=1;i<=n;i++)if(i!=k) 
    41             a[i][k]=(mod-a[i][k]*a[k][k]%mod)%mod;
    42     }
    43     for(int k=n;k;k--){ 
    44         for(int i=1;i<=n;i++)
    45             swap(a[js[k]][i],a[k][i]);
    46         for(int i=1;i<=n;i++)
    47             swap(a[i][is[k]],a[i][k]);
    48     }
    49 }
    50 int main(){
    51     //freopen("a.in","r",stdin);
    52     //freopen("a.out","w",stdout);
    53     scanf("%d%d",&n,&mod);
    54     for(int i=1;i<=n;i++)
    55         for(int j=1;j<=n;j++)
    56             scanf("%lld",a[i]+j);
    57     inv();
    58     for(int i=1;i<=n;i++)
    59         for(int j=1;j<=n;j++)
    60             printf("%lld%c",a[i][j],j==n?'
    ':' ');
    61     return 0;
    62 }

    第一题板子题,就是把模数1e9+7改成了输入的数

     zhx大佬:这道题如果你没有做过矩阵求逆的话是最简单的(虽然我连样例都差点没看懂

  • 相关阅读:
    MATLAB 简单多边形的核
    MATLAB Moravec算子
    MATLAB Sepia Tone滤镜
    MATLAB 异或分类
    MATLAB 神经网络分类
    MATLAB 地图上画经纬度
    MATLAB 最小二乘多项式拟合
    MATLAB 对应点集配准的四元数法
    MATLAB 高斯牛顿法最优化
    MATLAB Levenberg-Marquardt法最优化
  • 原文地址:https://www.cnblogs.com/lcezych/p/10686247.html
Copyright © 2011-2022 走看看