Một mảng có kích thước 5
x 5 gồm các số nguyên dương được sắp xếp theo quy luật sau:
1 |
2 |
3 |
4 |
5 |
2 |
4 |
6 |
8 |
10 |
3 |
6 |
9 |
2 |
4 |
4 |
8 |
2 |
4 |
6 |
5 |
10 |
4 |
6 |
8 |
Hãy tạo ra bảng n x
n theo quy luật trên.
Dữ liệu vào từ file: TAOBANG.INP
- Dòng duy nhất ghi số n (1 ≤ n ≤ 600).
Kết quả ra file: TAOBANG.OUT
- Gồm n dòng, mỗi
dòng gồm n số được sắp xếp theo quy luật, mỗi số cách nhau một khoảng trắng.
Ví dụ:
TAOBANG.INP |
TAOBANG.OUT |
6 |
1 2 3 4 5 6 2 4 6 8 10 12 3 6 9 12 2 4 4 8 12 2 4 6 5 10 2 4 6 8 6 12 4 6 8 10 |
CODE THAM KHẢO:
Program Tao_bang;
var a:array[0..601,0..601] of longint;
n,m,r,c,k,i,j: longint;
fi,fo:text;
procedure DocFile;
var k:longint;
begin
assign(fi,'TAOBANG.INP'); reset(fi);
readln(fi,n);
close(fi);
end;
procedure print;
var i,j: longint;
begin
for i:=1 to n do
begin
for j:=1 to n do write(fo,a[i,j]:3,' ');
writeln(fo);
end;
end;
procedure int;
begin
for i:=1 to n do
for j:=1 to n do a[i,j]:=0;
end;
procedure tao3dong; //tao N div 2 dong
begin
for i:=1 to n div 2+1 do
begin
r:=i; c:=1;
for j:=1 to n do
begin
if (r*c>2*n) then
begin
r:=2; c:=1;
end;
a[i,j]:=r*c;
c:=c+1;
a[j,i]:=a[i,j];
end;
end;
end;
procedure tao; //tao N-N div 2 dong sau
var i,j,r,c: integer;
begin
for i:=n div 2+2 to n do
begin
r:=i;
for j:=n div 2+2 to n do
begin
c:=a[i,j-1];
if (r+c) > 2*n then
begin
r:=2;
a[i,j]:=a[i-1,j+1];
if a[i,j] = 0 then
begin
if (a[i,j-1]+2 > 2*N) then a[i,j]:=2
else a[i,j]:=a[i,j-1]+2; //o cuoi
end;
end
else a[i,j]:=a[i,j-1]+2;
end;
end;
a[j,i]:=a[i,j];
end;
begin
DocFile;
assign(fo,'TAOBANG.OUT'); rewrite(fo);
int;
tao3dong;
tao;
print;
close(fo);
end.
Đăng nhận xét