program P1455;
type
arr=array [0..1000] of double;
const
zero=1e-8;
var
n:longint;
a:array [0..1000] of arr;
ans:array [0..1000] of double;
procedure init;
var
i,j:longint;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n+1 do read(a[i,j]);
readln;
end;
end;
procedure swap(var x,y:arr);
var
t:arr;
begin
t:=x;
x:=y;
y:=t;
end;
procedure main;
var
i,j,k,max:longint;
t:double;
begin
for i:=1 to n do
begin
max:=i;
for j:=i+1 to n do if abs(a[j,i])>abs(a[max,i]) then max:=j;
if max<>i then swap(a[max],a[i]);
for j:=i+1 to n do
if abs(a[j,i]) >zero then
begin
t:=a[i,i]/a[j,i];
for k:=i to n+1 do
begin
a[j,k]:=a[i,k]-a[j,k]*t;
end;
end;
end;
end;
procedure outit;
var
i,j:longint;
begin
for i:=n downto 1 do
begin
if abs(a[i,i]) >zero then
begin
ans[i]:=a[i,n+1]/a[i,i];
for j:=i-1 downto 1 do
begin
a[j,n+1]:=a[j,n+1]-ans[i]*a[j,i];
end;
end;
end;
for i:=1 to n do write(round(ans[i]),' ');
end;
begin
init;
main;
outit;
end.
TYVJ1455(贾老二算算术)
最新推荐文章于 2017-08-09 23:47:00 发布