Tải bản đầy đủ (.doc) (8 trang)

đề thi thuwe học sinh giỏi tin học 11

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (134.77 KB, 8 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO
THANH HÓA

ĐỀ THI HỌC SINH GIỎI LỚP 12
Năm học: 2015 - 2016
Môn thi: Tin học
Thời gian: 180 phút (không kể thời gian giao đề)
Đề này có 03 câu, gồm 02 trang.

Tổng quan bài thi:
Bài 1
Bài 2
Bài 3

Tên bài
Bội số
Ghép xâu
Phân tích số

File chương trình
BOISO.PAS
GHEPXAU.PAS
PHANTICH.PAS

File dữ liệu vào
BOISO.INP
GHEPXAU.INP
PHANTICH.INP

File kết quả
BOISO.OUT


GHEPXAU.OUT
PHANTICH.OUT

Hãy lập trình giải các bài toán sau:
Bài 1: Bội số (6 Điểm)
Tên chương trình: BOISO.PAS
Cho số nguyên dương N (N<3000). Hãy xác định một số M nguyên dương là bội
số của số N sao cho biểu diễn của M trong hệ thập phân chỉ chứa các chữ số 0 và 1
Dữ liệu:
Cho file Văn bản BOISO.INP gồm 1 dòng chứa số nguyên dương N
Kết quả:
Cho file Văn bản BOISO.OUT gồm 1 dòng chứa số nguyên dương M
BOISO.INP

BOISO.OUT

25
100
Bài 2: (6 điểm) Ghép xâu.
Tên chương trình: GHEPXAU.PAS
Cho 2 xâu ký tự S1, S2. Có thể ghép một số lần liên tiếp xâu S 1 để được xâu S2 hay
không?
Dữ liệu: Vào từ file văn bản XAU.INP
• Dòng đầu tiên ghi xâu S1,
• Dòng thứ hai ghi xâu S2.
Kết quả: Ghi vào file văn bản XAU.OUT
Trong trường hợp ghép được, ghi số K là số lần ghép liên tiếp xâu S 1 để được xâu
S2, trường hợp ngược lại ghi số 0.
Ví dụ:
XAU.INP

XAU.OUT
XAU.INP
XAU.OUT
ACM
3
MNP
0
ACMACMACM
MNPMNPMNPC
Bài 3: (7 điểm) Phân tích số

Tên chương trình: PHANTICH.PAS
1


Nhập một số nguyên n (4sao cho tổng của m số nguyên tố này nhỏ hơn hoặc bằng n.
Yêu cầu:
Cho biết có bao nhiêu cách chọn với cùng số m lớn nhất
Ví dụ:
Với n = 8 chọn nhiều nhất m = 2 số nguyên tố khác nhau, và có 3 cách chọn sau:
2+3 <8
2+5 <8
3+ 5 <=8
Dư liệu vào: Vào từ File PHANTICH.INP số nguyên n
Kết quả: Đưa ra file văn bản: PHANTICH.OUT Số cách chọn
PHANTICH.INP

PHANTICH.OUT


8

3

PHANTICH.INP

PHANTICH.OUT

15

4

Cán bộ coi thi không giải thích gì thêm.
----------------------------- Hết -----------------------------

2


I. MA TRẬN ĐỀ
Cấp độ
Chủ đề
- Cấu trúc rẽ nhánh
- Cấu trúc lặp
- Kiểu tệp
- Chương trình con
Số câu
Số điểm Tỉ lệ %
- Cấu trúc rẽ nhánh
- Cấu trúc lặp
- Kiểu xâu

- Kiểu tệp
- Chương trình con
Số câu
Số điểm Tỉ lệ %
- Cấu trúc rẽ nhánh
- Cấu trúc lặp
- Kiểu tệp
- Chương trình con
Số câu
Số điểm Tỉ lệ %
Tổng số câu
Tổng số điểm %

Nhận biết

Thông hiểu

Vận dụng

TL

TL

TL

Cộng

Vận dụng kiến thức
chung để viết chương
trình

1
6.0(60%)
Vận dụng kiến thức
chung để viết chương
trình

1
6.0(60%)

1
6.0(60%)
Vận dụng kiến thức
chung để viết chương
trình

1
6.0(60%)

1
7.0(70%)
3
10.0 (100%)

1
7.0(70%)
3
10
(100%)

3



II. HƯỚNG DẪN CHẤM
Bài 1: Thử các bộ Test
Test
BOISO.INP
1
1
2
2
3
25
4
77
5
199
6
299
Bài 2: Thử các bộ Test
Test
1
2
3

4
5
6

BOISO.OUT
1

10
100
1001
111000011
10010101101

GHEPXAU.INP

a
a
abc
abcabcabc
abcde
abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde
abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde
abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde
abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde
abcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcdeabcde
abcdefghab
abcdabefgh
ab
abbaabba
abcd
dcab

Bài 3: Thử các bộ Test
PHANTICH.INP
Test
1
8

2
15
3
99
4
566
5
1001
6
1234
7
19999

Điểm
1
1
1
1
1
1

PHANTICH.OUT

3
4
9
19
25
27
92


GHEPXAU Điểm
.OUT
1
1
3

1

50

1

0

1

0

1

0

1

Điểm
1
1
1
1

1
1
1
4


III. BÀI GIẢI THAM KHẢO
Bài 1: Bội số
const fi='BOISO.INP';
fo='BOISO.OUT';
var f:text;
n:integer;
i:extended;
{-------------------------------}
function kt(a:extended):boolean;
begin
kt:=false;
while a>0 do
if 1<(a - int(a/10)*10) then exit
else a:=int(a/10);
kt:=true;
end;
{-------------------------------}
begin
assign(f,fi);
reset(f);
readln(f,n);
close(f);
i:=1;
while not(kt(n*i/1)) do i:=i+1;

assign(f,fo);
rewrite(f);
writeln(f,trunc(n*i));
close(f);
end.
Bài 2: Ghép xâu
Program GhepXau;
var s1,s2:string;
Procedure DocFile;
var f:text;
begin
assign(f,'Xau.inp');
reset(f);
readln(f,s1);
readln(f,s2);
close(f);
end;
5


Function Ghepduoc(x,y:string):boolean;
var i:byte;
s:string;
begin
s:='';
for i:=1 to length(y) div length(x) do
s:=s+x;
Ghepduoc:=s=y;
end;
Procedure xuly;

var f:text;
begin
assign (f,'Xau.out'); rewrite(f);
if Ghepduoc(s1,s2) then write(f,length(s2) div length(s1))
else write(f,0);
close(f);
end;
Begin
DocFile;
Xuly;
End.
Bài 3: Phân tích số
const fi='PHANTICH.INP';
fo='PHANTICH.OUT';
var f:text;
n,m,k:longint;
{-------------------------------}
procedure nhap;
begin
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;
{-------------------------------}
function ngto(a:longint):boolean;
var i:longint;
begin
ngto:=false;
for i:=2 to trunc(sqrt(a)) do if a mod i = 0 then exit;

ngto:=true;
end;
6


{-------------------------------}
function C(k,n:longint):longint;
begin
c:=0;
if n=0 then exit;
if k=1 then c:=n
else
if k=n then c:=1
else
c:=c(k,n-1)+c(k-1,n-1);
end;
procedure run;
var key,i,t:longint;
begin
nhap;
t:=0;
k:=0;
i:=2;
while t+i<=n do
begin
if (ngto(i))and(t+i<=n) then
begin
t:=t+i;
key:=i;
inc(k);

end;
i:=i+1;
end;
t:=t-key;
m:=k;
while t+i<=n do
begin
if (ngto(i))and(t+ibegin
t:=t+i;
inc(m);
end;
inc(i);
end;
assign(f,fo);
rewrite(f);
write(f,c(k,m));
7


close(f);
end;
{-------------------------------}
begin
run;
end.

8




×