Mật khẩu là một dãy số A có N số nguyên tử bảng vuông S gồm n*n ô, trong đó S[i,j] = A[i] + A[j] với i ≠ j, S[i,j] = 0 nếu i = j.
Yêu cầu: cho trước bảng S, hãy tìm mật khẩu.
Dữ liệu vào: file
MATKHAU.INP
- Dòng 1: Ghi số nguyên dương N (N<=30).
- N dòng tiếp theo, mỗi dòng chứa n số nguyên biểu diễn bảng S (-100 ≤ S[i,j] ≤ 100).
Dữ liệu ra: File MATKHAU.OUT ghi ra dãy số A.
Ví dụ:
MATKHAU.INP |
MATKHAU.OUT |
MATKHAU.INP |
MATKHAU.OUT |
2 0 2 2 0 |
1 1 |
4 0 3 6 7 3 0 5 6 6 5 0 9 7 6 9 0 |
2 1 4 5 |
CODE THAM KHẢO:
program Mat_Khau;
const fi='MATKHAU.INP';
fo='MATKHAU.OUT';
var f,g:text;
i,n,j,min,k:longint;
a:array[1..30] of longint;
s:array[1..30,1..30] of longint;
{-----------------------------------}
function kt:boolean;
var i,j:longint;
begin
for i:=1 to n do
for j:=1 to n do
if i<>j then
if a[i]<>s[i,j]-a[j] then exit(false);
exit(true);
end;
{_---------------------------------}
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,n);
for i:=1 to n do
for j:=1 to n do read(f,s[i,j]);
for i:=-100 to 100 do
begin
a[1]:=i; k:=0;
for j:=2 to n do
begin
a[j]:=s[1,j]-a[1];
if (a[j]< -100)or (a[j]>100) then
begin
k:=1;
break;
end;
end;
if k<>0 then continue;
if kt then
begin
for j:=1 to n do write(g,a[j],' ');
break;
end;
end;
close(f);close(g);
end.
Đăng nhận xét