POJ 2947 高斯消元--判断一解多解无解

又是偷来的代码,但是第一道高斯消元,纪念下

知道每条式子的结果取模后的值,求方程组,这不同于一般的高斯消元,而且答案必须为整数并在一定区间内

1.由于是整数要用到gcd;

2.解的判断:

有解的情况都是必须满足row一下全为0

一解:化简后是严格的三角矩阵

多解:自由变量个数较少

无解:row以下有非0的

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include
#include 
#include 
using namespace std;
#define N 305
char day[][20]={"","MON","TUE","WED","THU","FRI","SAT","SUN"};
int n,m,k,mat[N][N],ans[N];

int gcd(int a,int b)
{
	if(b==0)
		return a;
	else return gcd(b,a%b);
}
bool mul_solu;
bool gauss(int mat[N][N],int m,int n)
{
	mul_solu=false;
	int row,col;
	for(row=0,col=0;rowabs(mat[p][col]))
				p=j;
		if(p!=row)
		{
			for(int j=0;j<=n;++j)
				swap(mat[row][j],mat[p][j]);
		}
		if(mat[row][col]==0) // 最大的都为0,说明这一列以下全是0
		{
			row--;
			continue;
		}
		for(int j=row+1;j=0;--i)
	{
		bool flag=false;
		for(int j=3;j<=9;++j)
		{
			int rr=0;
			for(int k=i+1;k=0)
		return ed-st+1;
	else return ed+8-st;
}
char t1[10],t2[10];
int tt;
int main ()
{
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		if(n==0 && m==0) break;
		memset(mat,0,sizeof(mat));
		for(int i=0;i


你可能感兴趣的:(ACM,数学,高斯消元)