20138: 求解多元一次方程组
http://cs101.openjudge.cn/practice/20138
现在需要求解给定的多元一次方程组,方程的数量保证与未知数相等,且有唯一解。方程组会按照如下图所示的增广矩阵的形式给出。请依次给出每个未知数的解。

输入
第一行输入正整数n,表示未知数个数(2=接下来n行,每行输入n+1个整数,表示增广矩阵的各个元素
输出
一共n行,按如下格式输出每个未知数的解,结果保留两位小数,未知数的顺序与增广矩阵中从左到右的顺序相同。
样例输入
3
2 3 1 6
1 -1 2 -1
1 2 -1 5样例输出
x1 = 2.00
x2 = 1.00
x3 = -1.00来源:cs101-2019 高靖松
python
n=int(input())
mat=[]
ans=[]
for i in range(n):
mat.append([float(x) for x in input().split()])
for i in range(n):
if mat[i][i]==0:
for j in range(i+1,n):
if mat[j][i]!=0:
mat[i],mat[j]=mat[j][:],mat[i][:]
break
mat[i]=[x/mat[i][i] for x in mat[i]]
for j in range(i+1,n):
k=mat[j][i]/mat[i][i]
mat[j]=[mat[j][x]-k*mat[i][x] for x in range(n+1)]
for i in range(n-1,-1,-1):
ans.append(mat[i][-1]/mat[i][i])
for j in range(i):
mat[j][-1]-=mat[j][i]*ans[-1]
ans.reverse()
for i in range(n):
print('x{} = {:.2f}'.format(i+1,ans[i]))