Bài 52/2001 - Xác định các tứ giác đồng hồ trong ma trận (Dành cho học sinh THCS và PTTH)
uses crt;
var s,n,i,k,j,a1,a2,b1,b2:integer;
chon,mau:byte;
a:array[1..100,1..100]of integer;
{----------------------------}
procedure nhap;
begin
write('nhap n>=2:');readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('nhap a[',i,'j]:');
readln(a[i,j]);
end;
end;
{----------------------}
procedure tinh;
begin
clrscr;
nhap;
s:=0;
for i:=1 to n-1 do
for j:=1 to n-1 do
if ((a[i,j]
or((a[i,j+1]
or((a[i+1,j+1]
or((a[i+1,j]
then inc(s);
writeln;
writeln;
writeln;
writeln('So luong tu giac dong ho la:',s);
readln;
end;
{-----------------}
procedure max;
var t:integer;
begin
writeln('Nhap n>=2:');readln(n);
i:=1;
a1:=1;a2:=n;
b1:=1;b2:=n;
mau:=0;
t:=0;
while i<=n*n do
begin
for k:=a1 to a2 do
begin
a[b1,k]:=i;
gotoxy(5*k,b1);
inc(mau);
if mau>15 then mau:=1;
textcolor(mau);
write(i);
delay(70);inc(i);
end;
for k:=b1+1 to b2+t do
begin
a[k,a2]:=i;
gotoxy(5*(a2),k);
inc(mau);
if mau>15 then
mau:=1;
textcolor(mau);
write(i);
delay(70);
inc(i);
end;
for k:=b2+t downto b1+1 do
begin
a[k,b2]:=i;
gotoxy(5*(b2-1),k);
inc(mau);
if mau>15 then mau:=1;
textcolor(mau);
write(i);
delay(70);
inc(i);
end;
for k:=a2-2 downto a1 do
begin
a[b1+1,k]:=i;
gotoxy(5*k,b1+1);
inc(mau);
textcolor(mau);
write(i);
delay(70);
inc(i);
end;
dec(a2,2);
dec(b2,2);
inc(t,2);
inc(b1,2);
end;
if n>2 then s:=3*(n-2) else s:=1;
writeln;writeln;
writeln('Bang dong ho max');writeln;
writeln('Voi ma tran vuong cap ',n,'thi so luong tu giac dong ho lon nhat la:',s);
readln;
End;
{------------------}
procedure min;
begin
clrscr;
writeln('n>=2:');readln(n);
i:=1;
b1:=1;
while i<=n*n do
begin
for k:=1 to n do
begin
a[b1,k]:=i;
inc(mau);
if mau>15 then mau:=1;
textcolor(mau);
gotoxy(5*k,b1);
write(i);
delay(70);
inc(i);
end;
inc(b1);
end;
writeln;writeln;writeln('Bang tren s co gia tri=0');
readln;
End;
{------------------------------}
BEGIN
Clrscr;
repeat
textcolor(white);
writeln('1:cau a (Tinh so luong S)');
writeln('2:cau b (Lap bang co S lon nhat)');
writeln('3:cau c (Lap bang co S nho nhat)');
writeln('4:thoat');
writeln('Chon chuc nang:');readln(chon);
case chon of
1: begin
clrscr;
tinh;
end;
2: begin
clrscr;
max;
end;
3: begin
clrscr;
min;
end;
end;{of Case}
clrscr;
until chon=4;
END.
(Lời giải của bạn:Nguyễn Việt Hoà)
Bài 53/2001 - Lập lịch tháng kỳ ảo (Dành cho học sinh THCS và PTTH)
(* Tat ca cac lich deu la lich ki ao *)
Program bai 53;
uses crt;
Const out='lichao.out';
Type mang=array[1..6,1..7] of integer;
Var a:mang;
i,j,dem:integer;
s:real;
f:text;
(*--------------------------------------*)
PROCEDURE Viet;
Var i,j:integer;
Begin
inc(dem);
writeln(f,'Kha nang thu ',dem);
for i:=1 to 6 do
begin
for j:=1 to 7 do
if a[i,j]<>0 then write(f,a[i,j]:3)
else write(f,'':3);
writeln(f);
end;
writeln(f);
End;
(*------------------------------------------*)
PROCEDURE Laplich(k,t:integer);
Var i,j,i1:integer;
Begin
for i1:=k to t+k-1 do
begin
j:=i1 mod 7;
i:=i1 div 7;
if j=0 then
begin
j:=7;
dec(i);
end;
a[i+1,j]:=i1-k+1;
end;
viet;
End;
(*-------------------------------------------*)
PROCEDURE Xuli;
Var i,j,k,t:integer;
Begin
for k:=1 to 7 do
for t:=28 to 31 do
begin
fillchar(a,sizeof(a),0);
Laplich(k,t);
end;
End;
(*---------------------------------------------*)
BEGIN
clrscr;
assign(f,out);
rewrite(f);
dem:=0;
Xuli;
close(f);
END.
(Lời giải của bạn: Đỗ Ngọc Sơn)
Bài 54/2001 - Bạn hãy gạch số
(Dành cho học sinh Tiểu học và THCS)
Chúng ta viết ra 10 số nguyên tố đầu tiên:
2 3 5 7 11 13 17 19 23 29
là số có 16 chữ số, có thể chứng minh không khó khăn lắm rằng sau khi gạch đi 8 chữ số thì số nhỏ nhất có thể được là: 11111229; còn số lớn nhất có thể được là: 77192329. Thật vậy:
a. Gạch đi 8 chữ số, để số còn lại là một số có 8 chữ số là nhỏ nhất (giữ nguyên thứ tự ban đầu). Nhìn vào dãy số ở trên ta thấy số 1 là nhỏ nhất, có năm chữ số 1 và sau chữ số 1 thứ năm này lại còn nhiều hơn 3 chữ số khác nữa. Do đó, 5 chữ số đầu của số cần tìm chắc chắn phải là 5 chữ số 1. Lí luận tương tự, để tìm được 3 chữ số còn lại.
Chia sẻ với bạn bè của bạn: |