社区讨论
WA on#14 求助
P2455[SDOI2006] 线性方程组参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lvonahto
- 此快照首次捕获于
- 2024/05/02 10:46 2 年前
- 此快照最后确认于
- 2024/05/02 13:53 2 年前
CPP
#include <cmath>
#include <cstdio>
#include <iostream>
#include <algorithm>
#define init signed
#define int double
using namespace std;
init n;
int guass[105][105];
void check()
{
bool hs = true, pf = false;
for (init i = 1;i <= n; ++ i)
{
if (guass[i][i] == 0)
{
if (guass[i][n + 1] == 0)
{
pf = true;
}
else
{
hs = false;
}
}
}
if (! hs)
{
cout << -1 << endl;
exit(0);
}
if (pf)
{
cout << 0 << endl;
exit(0);
}
return;
}
init main()
{
ios::sync_with_stdio(false);
cin.tie(0) , cout.tie(0);
cin >> n;
for (init i = 1;i <= n; ++ i)
{
for (init j = 1;j <= n + 1; ++ j)
{
cin >> guass[i][j];
}
}
for (init i = 1;i <= n; ++ i)
{
init maxn_p;
int maxn = 0;
for (init j = i;j <= n; ++ j)
{
if (fabs(guass[j][i]) >= maxn)
{
maxn = fabs(guass[j][i]);
maxn_p = j;
}
}
for (init j = 1;j <= n + 1; ++ j)
{
swap(guass[maxn_p][j] , guass[i][j]);
}
if(guass[i][i] == 0)
{
continue;
}
for (init j = i + 1;j <= n + 1; ++ j)
{
guass[i][j] /= guass[i][i];
}
for (init j = i + 1;j <= n; ++ j)
{
int l = guass[j][i];
for (init k = 1;k <= n + 1; ++ k)
{
guass[j][k] -= l * guass[i][k] ;
}
}
}
for (init i = n - 1;i >= 1; -- i)
{
for (init j = i + 1;j <= n; ++ j)
{
guass[i][n + 1] -= guass[i][j] * guass[j][n + 1];
}
}
check();
for (init i = 1;i <= n; ++ i)
{
printf("x%d=%.2lf\n", i , guass[i][n + 1]);
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...