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大佬:这道题如果你没有做过矩阵求逆的话是最简单的(虽然我连样例都差点没看懂

  • 相关阅读:
    Android 4 学习(21):对话框
    Android 4 学习(20):ActionBar
    Android 4 学习(19):Services
    Android 4 学习(18):搜索
    Android 4 学习(17):使用Content Resolver
    【转】Max2013脚本工具的乱码问题
    【转】巧用DOS tree命令+批处理 实现 指定文件 批量复制!
    【转】PHP 杂谈 坑爹的file_exists
    【转】MySQL:日期函数、时间函数总结(MySQL 5.X)
    【转】pam_mysql
  • 原文地址:https://www.cnblogs.com/lcezych/p/10686247.html
Copyright © 2011-2022 走看看