struct Guass{//瓜丝
db a[M][M];
db res[M];
int n,m;
void init(int nn){
n=nn;
m=nn+1;//多一个常数项(我的写法里每个方程值为0,多一个常数项)
memset(res,0,sizeof(res));
memset(a,0,sizeof(a));
}
void xiao(int x,db ff,int y){
for(int i=1;i<=m;i++)
a[y][i]-=a[x][i]*ff;
}
void getres(){
int i,j;
db tp;
res[m]=1;
for(i=n;i>0;i--){
tp=0;
for(j=i+1;j<=m;j++) tp+=a[i][j]*res[j];
res[i]=-tp/a[i][i];
}
res[m]=0;//复原,免得其它地方访问越界
}
void gauss(){
int i,j,k=0;
for(i=1;i<m;i++){
k++;
for(j=k;j<=n;j++)
if(a[j][i]){
swap(a[j],a[k]);
break;
}
for(j=1;j<=n;j++)
if(a[j][i]&&j!=k)
xiao(k,a[j][i]/a[k][i],j);
}
getres();
}
}GS;