#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<map>#defineRedge(u)for(int k = h[u],to; k; k = ed[k].nxt)#define REP(i,n)for(int i =1; i <=(n); i++)#define mp(a,b) make_pair<int,int>(a,b)#define cls(s) memset(s,0,sizeof(s))#define cp pair<int,int>#define LL longlongintusingnamespacestd;constint maxn =305,maxm =100005,INF =1000000000,P =1000000007;inlineintread(){intout=0,flag =1;char c = getchar();while(c <48|| c >57){if(c =='-') flag =-1; c = getchar();}while(c >=48&& c <=57){out=(out<<3)+(out<<1)+ c -48; c = getchar();}returnout* flag;}intqpow(int a,int b){int ans =1;for(; b; b >>=1,a =1ll* a * a % P)if(b &1) ans =1ll* ans * a % P;return ans;}intinv(int x){return qpow(x,P -2);}int A[maxn][maxn],n,m;intgause(){int rev =1;for(int i =2; i <= n; i++){int j = i;for(int k = i +1; k <= n; k++)if(abs(A[k][i])>abs(A[j][i]))
j = k;if(j != i){for(int k = i; k <= n; k++) swap(A[i][k],A[j][k]);
rev =-rev;}for(j = i +1; j <= n; j++){int t =1ll* A[j][i]* inv(A[i][i])% P;for(int k = i; k <= n; k++){
A[j][k]=((A[j][k]-1ll* A[i][k]* t % P)% P + P)% P;}}}int re =1;for(int i =2; i <= n; i++)
re =1ll* re * A[i][i]% P;
re =(1ll* re * rev % P + P)% P;return re;}char s[maxn];intmain(){
n = read();
REP(i,n){scanf("%s",s +1);
REP(j,n)if(s[j]-'0'>0)
A[i][j]=-1,A[j][j]++;}printf("%d\n",gause());return0;}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术