Thông tin tài liệu
së gi¸o dôc - ®µo t¹o
Qu¶ng b×nh
kú thi chän häc sinh giái líp 12
n¨m häc 2006-2007
§Ò chÝnh thøc - m«n : tin häc (vßng 2)
SBD:
Thêi gian lµm bµi: 180 phót.
§Ò ra
C©u 1: (3,0 ®iÓm) Chia b¸nh
(tªn file bµi lµm CAKE.PAS)
Trong buæi tèi trung thu cã mét c¸i b¸nh h×nh trßn. B¸nh ®îc viÒn quanh bëi N
qu¶ d©u vµ qu¶ sim.
Yªu cÇu: T×m c¸ch c¾t b¸nh b»ng mét nh¸t dao ®Ó ®îc hai phÇn sao cho sè lîng
qu¶ d©u ë phÇn nµy b»ng sè lîng qu¶ d©u ë phÇn kia vµ sè lîng qu¶ sim ë phÇn nµy
b»ng sè lîng qu¶ sim ë phÇn kia.
D÷ liÖu vµo: Cho trong file CAKE.INP cã cÊu tróc nh sau:
Dßng 1: Ghi sè nguyªn d¬ng N lµ sè lîng qu¶ d©u vµ qu¶ sim ë trªn viÒn b¸nh
(1 ≤ N ≤ 255).
Dßng 2: Ghi d·y gåm N ký tù “D” hoÆc “S” ghi liÒn nhau. C¸c vÞ trÝ g¾n qu¶
trªn b¸nh ®îc ®¸nh sè tõ 1 ®Õn N theo chiÒu kim ®ång hå b¾t ®Çu tõ mét vÞ trÝ tuú
ý.
D÷ liÖu ra: Ghi ra file CAKE.OUT theo cÊu tróc nh sau:
Dßng 1: NÕu t×m ®îc c¸ch chia th× ghi hai sè nguyªn d¬ng a, b (a ≤ b) cho biÕt
c¸c qu¶ ë vÞ trÝ a, a+1, ..., b lµ c¸c qu¶ thuéc cïng mét trong hai phÇn b¸nh. NÕu
kh«ng t×m ®îc c¸ch chia th× ghi sè 0.
VÝ dô:
CAKE.INP
CAKE.OUT
CAKE.INP
CAKE.OUT
6
3 5
5
0
DSSSDS
DSDDS
C©u 2: (3,5 ®iÓm) M· ho¸ x©u nhÞ ph©n (tªn file bµi lµm BINCODE.PAS)
Ngêi ta m· ho¸ mét x©u nhÞ ph©n gåm c¸c ký tù 0 vµ 1 nh sau : Víi mét x©u nhÞ
ph©n S, m· ho¸ cña nã lµ mét m¶ng T chøa c¸c sè nguyªn kh«ng ©m sao cho T[1]
b»ng 0 hoÆc b»ng 1 tuú theo ký tù ®Çu tiªn cña S lµ 0 hay 1. NÕu T[1]=0 th× tÝnh tõ
tr¸i sang ph¶i cña x©u S, lÇn lît T[2] b»ng sè ký tù 0 liªn tiÕp, T[3] b»ng sè ký tù 1
liªn tiÕp, T[4] b»ng sè ký tù 0 liªn tiÕp... cho ®Õn hÕt x©u S.
Yªu cÇu: Cho mét x©u nhÞ ph©n S, h·y x¸c ®Þnh m¶ng T theo c¸ch m· ho¸ trªn.
D÷ liÖu vµo: Cho trong file v¨n b¶n BINCODE.INP, cã cÊu tróc nh sau:
Dßng 1: Ghi sè N lµ sè lîng x©u nhÞ ph©n cÇn m· ho¸ (1 ≤ N ≤ 100).
N dßng tiÕp theo: Mçi dßng ghi mét x©u nhÞ ph©n S (1 ≤ length(S) ≤ 100).
D÷ liÖu ra: Ghi ra file v¨n b¶n BINCODE.OUT, theo cÊu tróc nh sau:
N dßng: Mçi dßng ghi m¶ng T lµ kÕt qu¶ m· ho¸ cña x©u nhÞ ph©n t¬ng øng.
C¸c sè trªn cïng mét dßng ®îc ghi c¸ch nhau mét dÊu c¸ch.
1
VÝ dô:
BINCODE.INP
2
0001111100111
10001111100111
BINCODE.OUT
0 3 5 2 3
1 1 3 5 2 3
C©u 3: (3,5 ®iÓm) H×nh ch÷ nhËt
(tªn file bµi lµm: HCN.PAS)
Cho N h×nh ch÷ nhËt trªn mÆt ph¼ng to¹ ®é sao cho c¸c c¹nh song song víi c¸c
trôc to¹ ®é. C¸c h×nh ch÷ nhËt ®îc ®¸nh sè tõ 1..N. H×nh ch÷ nhËt i ®îc gäi lµ bao
h×nh ch÷ nhËt j nÕu c¶ bèn ®Ønh cña h×nh ch÷ nhËt j ®Òu n»m trong hoÆc n»m trªn
c¸c c¹nh cña h×nh ch÷ nhËt i.
Yªu cÇu: T×m d·y c¸c h×nh ch÷ nhËt bao nhau sao cho sè lîng c¸c h×nh bao
nhau lín nhÊt.
D÷ liÖu vµo: Cho trong file v¨n b¶n HCN.INP, cã cÊu tróc nh sau:
Dßng 1: Ghi sè nguyªn N, lµ sè lîng h×nh ch÷ nhËt (1 ≤ N ≤ 1000).
N dßng tiÕp theo: Mçi dßng ghi bèn sè nguyªn x1, y1, x2, y2 lÇn lît lµ hoµnh ®é,
tung ®é cña c¸c ®Ønh tr¸i trªn, ph¶i díi cña mét h×nh ch÷ nhËt (-10000 < x 1 , y1, x2,
y2 < 10000)
D÷ liÖu ra: Ghi ra file v¨n b¶n HCN.OUT, theo cÊu tróc nh sau :
Dßng 1: Ghi sè nguyªn k lµ sè lîng c¸c h×nh ch÷ nhËt bao nhau lín nhÊt t×m ®îc.
VÝ dô:
HCN.INP
HCN.OUT
6
2
1 5 2 2
2 4 3 3
1 5 5 2
4 3 8 1
5 6 8 4
6 6 8 5
HÕt
2
Híng dÉn chÊm
®Ò thi chÝnh thøc häc sinh giái líp 12 - vßng 2
n¨m häc 2006-2007
I/ Ph¬ng ph¸p chung
- Gi¸m kh¶o t¹o c¸c bé d÷ liÖu vµo, tÝnh to¸n kÕt qu¶. Ch¹y ch¬ng tr×nh cña häc
sinh vµ so s¸nh kÕt qu¶.
- Gi¸m kh¶o cã thÓ sö dông ch¬ng tr×nh gîi ý ®Ó tÝnh kÕt qu¶ cña d÷ liÖu vµo:
CAKE.PAS
BINCODE.PAS
HCN.PAS
- Ch¬ng tr×nh häc sinh ch¹y ®óng mçi bé test, gi¸m kh¶o cho 0,5 ®iÓm. Nh vËy,
nÕu c©u hái cã 3,0 ®iÓm th× gi¸m kh¶o ph¶i t¹o ®îc 6 bé test.
- NÕu ch¬ng tr×nh ch¹y sai test nµo th× gi¸m kh¶o cho 0 ®iÓm ®èi víi test ®ã.
- Bµi to¸n cã thÓ cã nhiÒu kÕt qu¶ ®óng, nÕu kÕt qu¶ cña häc sinh kh¸c víi ®¸p
¸n nhng vÉn ®óng th× gi¸m kh¶o vÉn cho ®iÓm tèi ®a.
II/ Ch¬ng tr×nh gîi ý:
C©u 1: CAKE.PAS
{$r+}
Const fi='Cake.INP';
fo='Cake.OUT';
Var A:String;
N:Byte;
f:Text;
Procedure Read_file;
Begin
Assign(f,fi);
Reset(f);
Readln(f,n);
Read(f,A);
Close(f);
End;
Procedure Xuli;
Var i,sd,d,j,n1:Byte;
st:String;
Begin
If n mod 2 = 1 then Begin Writeln(f,0); Close(f); Halt; End;
d:=0;
For i:=1 to n do
If A[i]='D' then Inc(d);
If d mod 2 = 1 then Begin Writeln(f,0); Close(f); Halt; End;
n1:=n div 2;
For i:=1 to n1 do
Begin
sd:=0;
st:=copy(a,i,n1);
For j:=1 to n1 do
If st[j]='D' then Inc(sd);
If sd=(d div 2) then Begin Write(f,i,' ',i+n1-1); Close(f); Halt;
End;
End;
End;
Begin
Read_file;
Assign(f,fo);
Rewrite(f);
Xuli;
Close(f);
End.
3
C©u 2 : BINCODE.PAS
program
const
bincode;
fi='bincode.inp';
fo='bincode.out';
type mmcs=array[1..100] of string;
var f:text;
a:mmcs;
n:word;
procedure doc;
var i:word;
begin
assign(f,fi); reset(f);
readln(f,n);
for i:=1 to n do readln(f,a[i]);
close(f)
end;
procedure xl;
var i,j,x:word; st,s1:string;
begin
assign(f,fo);rewrite(f);
for i:=1 to n do
begin
st:=a[i];
while st[1]=' ' do delete(st,1,1);
while st[length(st)]=' ' do delete(st,length(st),1);
write(f,st[1],' ');
while st'' do
begin
if st[1]='1' then
begin
x:=pos('0',st);
if x0 then s1:=copy(st,1,x-1)
else begin s1:=st;x:=length(st)+1;end;
delete(st,1,x-1);
write(f,length(s1),' ');
end;
if st[1]='0' then
begin
x:=pos('1',st);
if x0 then s1:=copy(st,1,x-1)
else begin s1:=st;x:=length(st)+1;end;
delete(st,1,x-1);
write(f,length(s1),' ');
end;
end;
writeln(f);
end;
close(f);
end;
begin
doc;
xl;
end.
C©u 3: HCN.PAS
{$R+,Q+,S+}
const INP ='hcn.inp';
OUT ='hcn.out';
MAX = 1000;
var x1,y1,x2,y2,kq :array [1..MAX] of integer;
n : integer;
fi,fo : text;
procedure input;
var i : integer;
4
begin
assign(fi,INP); reset(fi);
read(fi,n);
for i := 1 to n do read(fi,x1[i],y1[i],x2[i],y2[i]);
close(fi);
end;
function area(i : integer) : longint;
begin
area:=longint(abs(x1[i]-x2[i]))*longint(abs(y1[i]-y2[i]));
end;
procedure qsort(l,r : integer);
var i, j, mid, t : integer;
begin
mid := (1 + r) div 2;
i := 1; j:= r;
repeat
while area(i) < area(mid) do inc(i);
while area(j) > area(mid) do dec(j);
if i j;
if i < r then qsort(1,j);
end;
function bao(i,j : integer) : integer;
begin
if (x1[i]= y1[j])and(x2[i]>= x2[j])and (y2[i] tmp then tmp := kq[i];
{if tmp = 1 then tmp := -1;}
assign(fo,OUT); rewrite(fo);
writeln(fo,tmp);
close(fo);
end;
begin
input;
qsort(1,n);
progress;
output;
end.
HÕt
5
... 8 6 Hết Hớng dẫn chấm đề thi thức học sinh giỏi lớp 12 - vòng năm học 2006-2007 I/ Phơng pháp chung - Giám khảo tạo liệu vào, tính toán kết Chạy chơng trình học sinh so sánh kết - Giám khảo sử... đợc test - Nếu chơng trình chạy sai test giám khảo cho điểm test - Bài toán có nhiều kết đúng, kết học sinh khác với đáp án nhng giám khảo cho điểm tối đa II/ Chơng trình gợi ý: Câu 1: CAKE.PAS... sinh so sánh kết - Giám khảo sử dụng chơng trình gợi ý để tính kết liệu vào: CAKE.PAS BINCODE.PAS HCN.PAS - Chơng trình học sinh chạy test, giám khảo cho 0,5 điểm Nh vậy, câu hỏi có 3,0 điểm giám
Ngày đăng: 11/10/2015, 13:33
Xem thêm: Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2006 2007 tỉnh quảng bình (vòng 2) , Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2006 2007 tỉnh quảng bình (vòng 2)