6,0 điểm XẺ GỖ Bài toán: Tại một xưởng gỗ, người thợ mộc có nhiệm vụ xẻ những thanh gỗ dài thành những thanh gỗ ngắn hơn với một độ dài nhất định.. Yêu cầu: Các thanh gỗ có chiều dài N m
Trang 1PHÒNG GIÁO DỤC VÀ ĐÀO TẠO
QUẬN THỐT NỐT
ĐỀ CHÍNH THỨC
(Đề gồm 02 trang)
KỲ THI CHỌN HỌC SINH GIỎI CẤP HUYỆN
NĂM HỌC 2015-2016 Khóa ngày tháng 01 năm 2016
MÔN: TIN HỌC
Thời gian làm bài: 150 phút (không kể thời gian phát đề)
BÀI 1 (6,0 điểm) XẺ GỖ
Bài toán: Tại một xưởng gỗ, người thợ mộc có nhiệm vụ xẻ những thanh gỗ dài
thành những thanh gỗ ngắn hơn với một độ dài nhất định Để giúp cho người thợ mộc đỡ vất vả và tiết kiệm thời gian, em hãy giúp người thợ mộc tìm ra số lần xẻ là ít nhất.
*Lưu ý: Mỗi lần xẻ có thể xẻ được nhiều thanh gỗ cùng một lúc.
Yêu cầu: Các thanh gỗ có chiều dài N mét (N là số tự nhiên chẵn) cần xẻ thành
những thanh gỗ có độ dài là 2 mét Em hãy viết chương trình để tìm ra số lần xẻ ít nhất
Dữ liệu nhập từ bàn phím: Số tự nhiên N chẵn (N>2) là độ dài của thanh gỗ cần xẻ Kết quả xuất ra màn hình: Số lần cần xẻ.
Ví dụ:
Dữ liệu nhập từ bàn phím Kết quả xuất ra màn hình
BÀI 2 (6,0 điểm) ĐỔI TIỀN
Bài toán: Tại các cửa hàng, nhân viên bán hàng thường đưa lại tiền thừa (thồi tiền)
rất nhiều lần cho khách Khi cửa hàng có nhiều khách, thì công việc thồi tiền rất mất thời gian Em hãy giúp cho nhân viên bán hàng đổi số tiền cần thồi thành số lượng các tờ tiền với mệnh giá khác nhau để công việc thồi tiền được nhanh chóng.
*Lưu ý: Tổng số tờ tiền phải là ít nhất.
Yêu cầu: Em hãy viết chương trình để đổi tiền thành các mệnh giá.
Dữ liệu nhập từ bàn phím:
- Dòng 1: Số tự nhiên k là số lượng của các mệnh giá tiền hiện có.
- Dòng 2: Dãy số T là dãy giá trị của các mệnh giá tiền hiện có.
- Dòng 3: Số tự nhiên N là số tiền cần đổi.
Kết quả xuất ra màn hình:
- Cột 1: Giá trị của các mệnh giá tiền.
- Cột 2: Số lượng tờ tương ứng với các mệnh giá tiền.
Trang 2Ví dụ:
Dữ liệu nhập từ bàn phím Kết quả xuất ra màn hình
3
1 2 5
33
5 6
2 1
1 1
BÀI 3: (8,0 điểm) MÃ HÓA CHUỖI KÝ TỰ
Bài toán: Tại Văn phòng Y, các văn bản rất quan trọng nên khi truy cập cần có mật
khẩu để bảo mật Khi mã hóa mật khẩu, Trưởng phòng Văn phòng Y dùng cách mã hóa theo nguyên tắc: các ký tự giống nhau trong mật khẩu được gom thành 1 kí tự kèm theo các
vị trí của ký tự đó trong mật khẩu
Yêu cầu: Em hãy viết chương trình giúp Văn phòng Y mã hóa các mật khẩu theo
nguyên tắc nêu trên.
Dữ liệu nhập từ bàn phím: Chuỗi ký tự S là mật khẩu.
Kết quả xuất ra màn hình: Chuỗi Y có dạng “A.n1-n2-B.n3 ”, trong đó A, B, : ký
tự được sơ lược; n1, n2, n3,…: vị trí xuất hiện của ký tự trong mật khẩu (chuỗi S).
Ví dụ:
Dữ liệu nhập từ bàn phím Kết quả xuất ra màn hình
-HẾT -Thí sinh không được sử dụng tài liệu Giám thị không giải thích gì thêm.
Họ và tên thí sinh………Số báo danh……… Chữ ký của giám thị 1………Chữ ký của giám thị 2……….
Trang 3QUẬN THỐT NỐT
ĐỀ CHÍNH THỨC
(Đề gồm 02 trang)
NĂM HỌC 2015-2016 Khóa ngày tháng 01 năm 2016
MÔN: TIN HỌC
Thời gian làm bài: 150 phút (không kể thời gian phát đề)
HƯỚNG DẪN CHẤM BÀI 1 (6,0 điểm) XẺ GỖ
BÀI 2 (6,0 điểm) ĐỔI TIỀN
3
1 5 2
33
5 6
2 1
6
5 20 10 50 2 1
555
50 11
6
1 10 50 2 5 20
779
50 15
20 1
5 1
2 2
1,5 đ
5
1 5 100 10 50
643
100 6
10 4
BÀI 3: (8,0 điểm) MÃ HÓA CHUỖI KÝ TỰ
Dữ liệu nhập từ bàn phím Kết quả xuất ra màn hình Điểm
-HẾT -Bai 1:
program xego;
var dem,n,i:integer;
begin
write('Nhap vao mot so chan: ');readln(n);
Trang 4if n<=2 then dem:=0
else
begin
dem:=1;
while n>2 do
begin
i:= n mod 2;
n:= n div 2;
dem:=dem+1;
end;
end;
writeln('So la xe it nhat la: ',dem);
readln;
end.
Bai 2:
Program doitien;
var st,tam,i,j,n,k:integer;
a:array[1 100] of integer;
procedure nhapmang;
begin
write('So luong tien: ');readln(k);
for i:=1 to k do
begin
write('a[',i,']: ');readln(a[i]);
end;
for i:=1 to k-1 do
for j:=i+1 to k do
if a[i]<a[j] then
begin
tam:=a[i];
a[i]:=a[j];
a[j]:=tam;
end;
end;
begin
nhapmang;
write('Nhap so tien can doi: ');readln(n);
for i:=1 to k do
begin
st:=n div a[i];
if st<>0 then writeln(a[i]:5,st:5);
n:=n mod a[i];
end;
readln;
end.
Bai 3:
program chuoi;
var s,st:string;
n,j,i:integer;
a:array[0 255] of boolean;
Trang 5write('Nhap xau: ');readln(s);
st:='';
for i:=1 to length(s) do
if not a[ord(s[i])] then
begin
a[ord(s[i])]:=true;
st:=st+s[i];
end;
for i:=1 to length(st) do
begin
write(st[i],'.');
for j:=1 to length(s) do
if st[i]=s[j] then write(j,'-');
end;
readln;
end.