TỔNG QUAN BÀI THI
Thí sinh lập trình giải các bài toán sau:
Bài 1:
Giải mã.
Để hiển thị trên màn hình các số hệ thập phân, máy
tính có một bộ phận làm nhiệm vụ biến đổi dữ liệu từ hệ nhị phân về hệ thập
phân.
Yêu cầu: Cho một dãy
nhị phân có độ dài 1 byte (8 bit). Hãy biến đổi 7 bit đầu tiên của dãy nhị phân
đó thành số thập phân tương ứng, bit thứ 8 (tận cùng bên trái) dùng để biểu
diễn dấu nếu là 1 thì biểu diễn dấu âm, ngược lại thì biểu diễn dấu dương.
Dữ liệu
vào: Từ file văn bản GIAIMA.INP gồm:
một hoặc nhiều dòng, mỗi dòng là một dãy nhị phân có độ dài 1 byte.
Dữ liệu
ra: Đưa vào file văn bản GIAIMA.OUT
gồm: một hoặc nhiều dòng, mỗi dòng là một số thập phân tương ứng.
Ví dụ:
Bài 2: Sắp xếp.
Cho một bảng số A gồm n hàng và m cột (nxm), các phần
tử của bảng số A là số nguyên.
Yêu cầu:
Sắp xếp các phần tử của bảng số A đã cho theo thứ tự tăng dần từ trái qua phải
và từ trên xuống dưới.
Dữ liệu vào:
Từ file văn bản SAPXEP.INP gồm:
- Dòng đầu là 2 số nguyên n và m.
- n dòng tiếp theo, mỗi dòng m số nguyên (bảng số A).
Dữ liệu
ra: Đưa vào file văn bản SAPXEP.OUT
gồm n dòng mỗi dòng có m số nguyên (bảng số A sau khi sắp xếp).
Ví dụ:
Bài 3: Đường đi.
Tại một quốc gia có n thành phố, biết rằng đường đi
giữa 2 thành phố bất kỳ (nếu có) đều là đường đi hai chiều. Sơ đồ mạng lưới
giao thông của n thành phố được biểu diễn bởi bảng A gồm n dòng và n cột (nxn),
trong đó:
A[i,j] là độ dài đường đi từ thành phố i đến thành phố
j.
A[i,j]=0 nếu không có đường đi từ thành phố i đến
thành phố j.
A[i,j]=A[j,i]
A[i,i]=0
A[i,j] là số nguyên, không âm.
Yêu cầu: Tìm đường đi ngắn nhất giữa hai thành phố p và q. Nếu
không tồn tại đường đi thì thông báo ‘khong
co duong di tu p den q’, nếu tồn tại hơn một đường đi ngắn nhất thì chọn
đường đi qua ít thành phố trung gian nhất.
Dữ liệu
vào: Từ file văn bản DUONGDI.INP gồm:
- Dòng đầu là số nguyên dương n.
- n dòng tiếp theo, mỗi dòng n số nguyên.
- Dòng cuối cùng gồm 2 số nguyên p và q
Dữ liệu
ra: Đưa vào file văn bản DUONGDI.OUT: Đường đi ngắn nhất hoặc thông báo ‘khong co duong di tu p den q’.
Ví dụ:
---Hết---
Ghi chú:
·
Thí sinh không được sử dụng tài liệu.
·
Cán bộ coi thi không giải thích gì thêm.
|
ĐÁP ÁN:
BÀI 1:
program giai_ma;
var f,g:text; ss:string;
function lt(x,k:byte):byte;
var t,i:byte;
Begin
t:=1; if k=0 then lt:=1;
for i:=1 to k do
t:=t*x;
lt:=t;
End;
procedure xuly(s:string);
var n,t,i:integer;
Begin
t:=0; n:=length(s);
for i:=n downto 2 do if s[i]='0' then t:=t+0*lt(2,n-i)
else t:=t+1*lt(2,n-i);
if s[1]='1' then t:=-t;
writeln(g,t);
End;
BEGIN
assign(f,'giaima3.inp'); reset(f);
assign(g,'giaima3.out'); rewrite(g);
while not(eof(f)) do
begin
readln(f,ss); xuly(ss);
end;
close(f);close(g);
END.
BÀI 2:
program sapxep;
const max=30000;
var c:array[1..max] of integer;
m,n,i,j,k: integer; g:text;
procedure nhap;
var f:text;
begin
assign(f,'sapxep.inp'); reset(f);
readln(f,n,m);
fillchar(c,sizeof(c),0);
for i:=1 to n do
begin
for j:=1 to m do
read(f,c[(i-1)*m+j]);
readln(f);
end;
close(f);
n:=n*m;
end;
procedure sort;
begin
for i:=1 to n do
for j:=n downto i+1 do
if c[j]<c[j-1] then
begin
k:=c[j];
c[j]:=c[j-1];
c[j-1]:=k;
end;
end;
procedure xuat;
begin
n:=n div m;
for i:=1 to n do
begin
for j:=1 to m do
write(g,c[(i-1)*m+j], ' ');
writeln(g);
end;
end;
BEGIN
assign(g,'sapxep.out'); rewrite(g);
nhap;
sort;
xuat;
close(g);
END.
BÀI 3:
program duong_di;
var a,c:array[1..50,1..50] of integer;
n,p,q: integer;
i,j,k: integer; g:text;
procedure nhap;
var f:text;
begin
assign(f,'duongdi3.inp');
reset(f);
readln(f,n);
fillchar(a,sizeof(a),0);
c:=a;
for i:=1 to n do
begin
for j:=1 to n do
read(f,a[i,j]);
readln(f);
end;
readln(f,p,q);
close(f);
end;
procedure xuat(i,j:integer);
begin
if c[i,j]=0 then write(g,'->',j)
else begin
xuat(i,c[i,j] );
xuat(c[i,j],j);
end;
end;
procedure xuly;
begin
for k:=1 to n do
for i:=1 to n do
if a[i,k]>0 then
for j:=1 to n do
if ( a[j,k]>0) and (i<>j) then
if (a[i,j]=0)or(a[i,j]>a[i,k]+a[k,j]) then
begin
a[i,j]:=a[i,k]+a[k,j];
c[i,j]:=k;
end;
if a[p,q]=0 then writeln(g,'Khong co duong di tu ',p,' den ',q)
else begin
writeln(g,'Duong di ngan nhat tu ' ,p,' den ',q,' dai ',a[p,q]);
write(g,p);
xuat(p,q);
end;
end;
BEGIN
assign(g,'duongdi3.out'); rewrite(g);
nhap;
xuly;
close(g);
END.
Không có nhận xét nào:
Đăng nhận xét