TỔNG QUAN BÀI THI
Thí sinh lập trình giải các bài toán sau:
Bài 4:
Mã hóa.
Để lưu trữ và xử lý 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ệ thập phân về hệ nhị phân.
Yêu cầu: Cho số thập
phân n (-127 ≤ n ≤ 127). Hãy biến đổi số thập phân n thành dãy nhị phân tương
ứng. Nếu n<0 thì bit thứ 8 (bit tận cùng bên trái) của dãy nhị phân là 1, ngược
lại là 0.
Dữ liệu
vào: Từ file văn bản MAHOA.INP gồm:
một hoặc nhiều dòng, mỗi dòng là một số thập phân.
Dữ liệu
ra: Đưa vào file văn bản MAHOA.OUT
gồm: một hoặc nhiều dòng, mỗi dòng là một dãy nhị phân tương ứng.
Ví dụ:
Bài 5: Biểu thức.
Cho một biểu thức (((((1 ? 2) ? 3) ? 4) ? 5) ? 6)
Yêu cầu:
Hãy tìm tất cả các phương án thay thế các dấu ‘?’ trong biểu thức bởi các phép
toán +,-,*,/ sao cho biểu thức có giá trị bằng một số nguyên dương cho trước.
Dữ liệu vào:
Từ file văn bản BIEUTHUC.INP gồm: một hoặc nhiều dòng, mỗi dòng là một số
nguyên dương.
Dữ liệu
ra: Đưa vào file văn bản BIEUTHUC.OUT
gồm: một hoặc nhiều dòng, mỗi dòng là một phương án tìm được. Nếu không có
phương án nào biểu diễn cho một số nguyên thì thông báo ‘Khong co phuong an
bieu dien (((((1 ? 2) ? 3) ? 4) ? 5) ? 6)=số nguyên’
Ví dụ:
Bài 6: Ngân hàng.
Một ngân hàng A có n (n ≤ 100) loại tiền mệnh giá
A[1], A[2], …, A[n] với số lượng tiền mỗi loại không giới hạn.
Yêu cầu: Hãy tìm một phương án chi số tiền m cho khách với số
lượng tờ tiền là ít nhất.
Dữ liệu
vào: Từ file văn bản NGANHANG.INP gồm 2 dòng:
- Dòng đầu: ghi hai số n và m.
- Dòng 2: ghi n số nguyên dương A[1], A[2], …,A[n].
Dữ liệu
ra: Đưa vào file văn bản NGANHANG.OUT gồm 2 dòng
- Dòng đầu: Ghi số lượng tờ tiền phải trả.
- Dòng 2: ghi n số nguyên tương ứng với số tờ tiền cần
phải trả cho mỗi loại tiền.
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 ma_hoa_nhi_phan;
var m:integer; f,g:text;
procedure mahoa(n:integer);
var s:string; b:boolean;
Begin
s:='';
b:=false;
if n<0 then begin n:=abs(n); b:=true; end;
while n>0 do
begin
if n mod 2 =1 then s:='1'+s else s:='0'+s;
n:=n div 2;
end;
while (length(s)<7) do s:='0'+s;
if b then s:='1'+s else s:='0'+s;
writeln(g,s);
End;
BEGIN
assign(f,'mahoa3.inp'); reset(f);
assign(g,'mahoa3.out'); rewrite(g);
while not(eof(f)) do
begin
readln(f,m); mahoa(m);
end;
close(f); close(g);
END.
BÀI 2:
program bieuthuc;
const a:array[1..4] of char =('+','-','*','/');
var i,j,k,l,m,n:integer;
f1,g:text;
b:boolean;
procedure xuat;
begin
writeln(g,'((((1',a[i],'2)',a[j],'3)',a[k],'4)',a[l],'5)',a[m],'6)= ',n);
end;
function f( x,y:real;d:integer):real;
begin
case d of
1: f:=(x+y);
2: f:=(x-y);
3: f:=(x*y);
4: f:=(x/y);
end;
end;
BEGIN
assign(f1,'bieuthu3.inp'); reset(f1);
assign(g,'bieuthu3.out'); rewrite(g);
b:=false;
while not(eof(f1)) do
begin
readln(f1,n);
for i:=1 to 4 do
for j:=1 to 4 do
for k:=1 to 4 do
for l:=1 to 4 do
for m:=1 to 4 do
if f(f(f(f(f(1,2,i),3,j),4,k),5,l),6,m)=n then begin xuat; b:=true; end;
if not b then writeln(g,'Khong tim thay!');
end;
close(f1); close(g);
END.
BÀI 3:
program nganhang;
var n:byte;
a:array[1..100] of byte;
fx,l:array[0..10000] of word;
m,i,j:integer;
procedure nhap;
var f:text;
begin
assign(f,'nganhan3.inp');
reset(f);
fillchar(a,sizeof(a),0);
readln(f,n,m);
for i:=1 to n do
read(f,a[i]);
close(f);
end;
procedure xuly;
begin
fillchar(fx,sizeof(fx),0);
l:=fx;
for i:=1 to m do
begin
for j:=1 to n do
if a[j]<=i then
if (fx[i]=0) or (fx[i-a[j]]+1<fx[i]) then
begin
fx[i]:=fx[i-a[j]]+1;
l[i]:=j;
end;
end;
end;
procedure xuat;
var f:text;
sl:array [1..100] of word;
begin
assign(f,'nganhan3.out');
rewrite(f);
fillchar(sl,sizeof(sl),0);
repeat
inc(sl[l[m]]);
m:=m-a[l[m]];
until fx[m]=0;
writeln(f,fx[i]) ;
for i:=1 to n do
write(f,sl[i],' ');
close(f);
end;
BEGIN
nhap;
xuly;
xuat;
END.
Không có nhận xét nào:
Đăng nhận xét