POJ 2065 高斯消元+线性模方程

2019-04-14 17:57发布

消元过程为保持整数用最小公倍数。 回代过程用线性模方程 计算过程注意保持模n下的非负数。 #include #include #include #include #include #include #include #include #include #include using namespace std; int p,n; char s[1000]; int a[100][100]; int ans[100]; int gcd(int a,int b) { return b==0 ? a : gcd(b,a%b); } int lcm(int a,int b) { return a/gcd(a,b)*b; } int extend_gcd(int a,int b,int &x,int &y) { if(b==0) { x=1;y=0; return a; } int res=extend_gcd(b,a%b,y,x); y=y-a/b*x; return res; } void gauss() { for(int i=0;iabs(a[pivot][i])) pivot=k; if(a[i][i]==0) continue; if(pivot!=i) { for(int j=0;j<=n;++j) swap(a[pivot][j],a[i][j]); } // elimination for(int k=i+1;k=0;--i) { for(int k=i+1;k