hdu3364-高斯消元(取模)

2019-04-13 12:27发布

列n个方程,表示每个灯会被哪些开关控制, 得到一个一个n*m的矩阵,最后一列为所要求的状态 则对这个(n+1)*(m)的矩阵高斯消元,得到方案数,答案爆int


#include #include #include #include #include #include #include #include #include #include using namespace std; const double pi=acos(-1.0); double eps=0.000001; int A[55][55]; int b[55][55]; const int mod=2; int n,m; int x[55];//free_x int exgcd(int a,int b,int &x,int &y) { if(!b) { x = 1; y = 0; return a; } else { int r = exgcd(b,a%b,y,x); y -= x * (a/b); return r; } } int lcm(int a,int b) { int x = 0, y =0; return a / exgcd(a,b,x,y) * b; } int Gauss(int n,int m) { int r,c; for(r=0,c=0; r abs(A[maxr][c])) maxr = i; if(maxr != r) for(int i=c; i<=m; i++) swap(A[r][i],A[maxr][i]); if(!A[r][c]) continue; for(int i=r+1; i=0; i--) { x[i] = A[i][m]; for(int j=i+1; j=0&&a=0&&b>q; while(q--) { for(int i=0; i