标签:没考 int LL 410 void include Day QwQ mod
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?'\n':' '); 61 return 0; 62 }
第一题板子题,就是把模数1e9+7改成了输入的数
zhx大佬:这道题如果你没有做过矩阵求逆的话是最简单的(虽然我连样例都差点没看懂
标签:没考,int,LL,410,void,include,Day,QwQ,mod 来源: https://www.cnblogs.com/lcezych/p/10686247.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。