J: 非齐次线性方程组
Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 65536 KB
Submit: 9 Accepted: 6
Description
我们知道,对于一个非齐次线性方程组,知道它的矩阵后,我们可以判断出该方程组的解的状况。
那么,假设我们知道这么一个矩阵,且矩阵大小为n*(n-1),请编程求出该矩阵对应的非齐次线性方程组的解。为降低题目难度,我们保证该非齐次线性方程组有唯一解。
Input
第一行为未知数个数n(n<=10); 接下来的n行给出符合题目描述的的矩阵。保证矩阵中每个元素均为正整数。
Output
n个数,表示该组解,两个数之间用一个空格隔开,保留两位小数。
Sample Input
3 1 1 10 33 2 1 2 10 3 2 5 22
Sample Output
1.00 2.00 3.00
#include<iostream>
#include<cstdio>
using namespace std;
double a[15][15];
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++) for(int j=1;j<=n+1;j++) scanf("%lf",&a[i][j]);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j) continue;
double t=-a[j][i]/a[i][i];
for(int k=i;k<=n+1;k++)
{
a[j][k]+=t*a[i][k];
}
}
}
for(int i=1;i<=n-1;i++) printf("%.2lf ",a[i][n+1]/a[i][i]);
printf("%.2lf/n",a[n][n+1]/a[n][n]);
}
return 0;
}