1
Sở Gd&Đt kỳ thi CHọN học sinh giỏi cấp tỉnhlớp12 thpt
Quảngbìnhnămhọc 2012 - 2013Môn thi: tinhọc - Vòng I
Đề thi chính thức (Khóa thi ngày 11 tháng 10 năm 2012)
Số Báo Danh: Thời gian làm bài: 180 phút (không kể thời gian giao đề)
RA
S dng ngụn ng lp trỡnh Turbo Pascal lp trỡnh gii cỏc bi toỏn sau:
Cõu 1: (3,0 im) Sp xp xõu. SAPXAU.PAS
Ngi ta nh ngha: T l mt nhúm ký t ng lin nhau.
Cho mt xõu St gm cỏc ký t ly t tp a z v du cỏch. Xõu khụng
quỏ 20 t, mi t di khụng quỏ 10 ký t.
Yờu cu: Sp xp cỏc t ca xõu ký t theo th t khụng gim ca di cỏc t
trong xõu St.
D liu vo: Cho trong file vn bn SAPXAU.INP, cú cu trỳc:
- Dũng 1: Ghi mt xõu ký t St (cú ớt nht 1 t).
D liu ra: Ghi ra file vn bn SAPXAU.OUT, theo cu trỳc:
- Dũng 1: Ghi cỏc t ca xõu ký t sau khi c sp xp. Cỏc t c ghi cỏch
nhau ỳng mt du cỏch.
Vớ d:
SAPXAU.INP SAPXAU.OUT
acb abcde abcd abc acb abc abcd abcde
Cõu 2: (3,5 im) Dóy con liờn tip. DAYCON.PAS
Cho dóy s nguyờn dng gm N phn t A
1
, A
2
,, A
n
.
Yờu cu: Hóy lit kờ tt c cỏc dóy con gm cỏc phn t ng liờn tip ca dóy
trờn sao cho tng giỏ tr cỏc phn t ca dóy con ú bng M.
D liu vo: Cho trong file vn bn DAYCON.INP, cú cu trỳc nh sau:
- Dũng 1: Ghi 2 s nguyờn dng N v M. Hai s c ghi cỏch nhau ớt nht mt
du cỏch. (1
N
1000; 1
M
32000)
- Dũng 2: Ghi N s nguyờn dng A
i
. Cỏc s c ghi cỏch nhau ớt nht mt du
cỏch. (1
Ai
10000 )
D liu ra: Ghi ra file vn bn DAYCON.OUT, gm nhiu dũng. Mi dũng ghi
mt dóy con tỡm c. Cỏc dóy con c ghi theo th t xut hin ca nú trờn dóy
ban u. Cỏc s trờn cựng mt dũng c ghi cỏch nhau ớt nht mt du cỏch.
Nu khụng tỡm c dóy con tha món iu kin thỡ ghi ra file mt s: 0.
Vớ d:
DAYCON.INP DAYCON.OUT
11 6
1 4 3 1 2 1 6 5 1 4 1
3 1 2
6
5 1
1 4 1
5 6
1 2 5 2 1
0
2
Câu 3: (3,5 điểm) Đếm nhóm bạn trong Hội trại NHOMBAN.PAS
Trong một Hội trại hè do Tỉnh Đoàn tổ chức, có N học sinh tham gia, trong
đó, có một số học sinh quen nhau. Một số học sinh được gọi là cùng 1 nhóm bạn,
nếu bất kì một học sinh nào thuộc nhóm đều có quen ít nhất 1học sinh khác trong
cùng nhóm đó.
Yêu cầu: Hãy đếm xem có bao nhiêu nhóm bạn trong N học sinh tham gia Hội trại.
Dữ liệu vào: Cho trong file văn bản NHOMBAN.INP, có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N, là số lượng học sinh tham gia Hội trại.
(1 ≤ N ≤ 100).
- Trong N dòng tiếp theo: Mỗi dòng ghi N số nguyên dương a[i,j] với ý nghĩa:
a[i,j] = 1 nếu học sinh i quen học sinh j (với i ≠j).
a[i,j] = 0 nếu học sinh i không quen học sinh j (với i ≠j).
a[i,i] = 1 (học sinh i được xem là quen bản thân nó).
Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.
Dữ liệu ra: Ghi ra file văn bản NHOMBAN.OUT, theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương K, là số lượng nhóm bạn tìm được trong N học
sinh tham gia Hội trại.
Ví dụ:
NHOMBAN.INP NHOMBAN.OUT
5
1 0 0 11
0 11 0 0
0 11 0 0
1 0 0 11
1 0 0 11
2
==HẾT==
3
Sở GD&ĐT kỳ thi CHọN học sinh giỏi cấp tỉnhlớp12 THPT
Quảngbìnhnămhọc 2012 - 2013Môn thi: tinhọc - Vòng i
hớng dẫn chấm
I. Phng phỏp:
- Giỏm kho to b d liu vo, tớnh toỏn kt qu. Thc hin chng trỡnh ca
hc sinh v so sỏnh kt qu.
- Giỏm kho cú th s dng chng trỡnh gi ý di õy tớnh toỏn kt qu
ca d liu vo.
- Chng trỡnh hc sinh ỳng mt b test, giỏm kho cho 0,5 im. Nh vy,
nu mt cõu cú 3 im thỡ giỏm kho phi to 6 b test.
- Vi mi cõu, giỏm kho phi to c ớt nht mt b test cú khụng gian d
liu ln.
- Riờng Cõu 1, th t sp xp ca HS cú th khỏc vi ỏp ỏn. Nu kt qu ca
hc sinh khỏc ỏp ỏn nhng vn ỳng thỡ giỏm kho vn cho im ti a.
II. Chng trỡnh gi ý:
Cõu 1: (3,0 im) Sp xp xõu
program sap;
const f1='sapxau.inp';
f2='sapxau.out';
type mm=array[1 20] of string;
var a:mm;
s,st,tg:string;
d:integer;
f:text;
procedure doc;
begin
assign(f,f1);
reset(f);
readln(f,s);
close(f);
end;
procedure xl;
var x,j,i:integer;
n:byte;
begin
n:=length(s);
while s[1]=' ' do delete(s,1,1);
while s[n]=' ' do delete(s,n,1);
x:=pos(' ',s);
while x>0 do
begin
delete(s,x,1);
x:=pos(' ',s);
end;
s:=s+' ';
for i:=1 to 20 do a[i]:='';
i:=0;
while s<>'' do
begin
i:=i+1;
a[i]:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
end;
4
d:=i;
{ for j:=1 to d do
begin
i:=1;st:='';
while (s[i]<>' ')do
begin
st:=st+s[i];
i:=i+1;
end;
delete(s,1,i);
a[j]:=a[j]+st;
end;}
for i:=1 to d-1 do
for j:=i+1 to d do
if length(a[i])>length(a[j]) then
begin
tg:=a[i];a[i]:=a[j];a[j]:=tg;
end;
end;
procedure xuat;
var i:integer;
begin
assign(f,f2);
rewrite(f);
for i:=1 to d do write(f,a[i],' ');
close(f);
end;
begin
doc;xl;xuat;
end.
Câu 2: (3,5 điểm) Dãy con liên tiếp
program day_con;
const fi='daycon.inp';
f0='daycon.out';
type mm=array[1 10000] of integer;
var f:text;
a:mm;
n,m:integer;
procedure doc;
var i:integer ;
begin
assign(f,fi);
reset(f);
read(f,n,m);
for i:=1 to n do read(f,a[i]);
close(f);
end;
procedure xuli;
var i,j,l:integer;
t:longint;
kt:boolean;
begin
assign(f,f0);
rewrite(f);
kt:=false;
for i:=1 to n do
begin
j:=i;
t:=0;
while (t<m )and (j<=n) do
begin
t:=t+a[j];
5
j:=j+1;
end;
if t=m then
begin
kt:=true;
for l:=i to j-1 do write(f,a[l],' ');
writeln(f);
end;
end;
if kt=false then write(f,0);
close(f);
end;
begin
doc; xuli;
end.
Câu 3: (3,5 điểm) Đếm nhóm bạn trong Hội trại
const fi='nhomban.inp';
fo='nhomban.out';
maxn=100;
type mhc=array[1 maxn,1 maxn] of byte;
mmc=array[1 maxn] of byte;
var a:mhc;
b:mmc;
n,stp:integer;
f:text;
Procedure doc;
var i,j:integer;
Begin
assign(f,fi);
reset(f);
readln(f,n);
for i:=1 to n do
begin
for j:=1 to n do read(f,a[i,j]);
readln(f);
end;
close(f);
End;
Procedure xl;
var i,j,k:integer;
Begin
for i:=1 to n do b[i]:=n+1;
stp:=0;
for k:=1 to n do
begin
if b[k]=n+1 then
begin
stp:=stp+1;
b[k]:=stp;
end;
for i:=1 to n do
begin
if b[i] = stp then
for j:=1 to n do
if (a[i,j]=1) and (b[j]=n+1) then b[j]:=stp;
end;
end;
end;
procedure xuatstp;
begin
assign(f,fo);
rewrite(f);
writeln(f,stp);
6
close(f);
end;
Begin
doc; xl;
xuatstp;
End.
.
0 1 1 0 0
1 0 0 1 1
1 0 0 1 1
2
==HẾT==
3
Sở GD&ĐT kỳ thi CHọN học sinh giỏi cấp tỉnh lớp 12 THPT
Quảng bình năm học 2 012 - 2 013
Môn thi: .
1
Sở Gd&Đt kỳ thi CHọN học sinh giỏi cấp tỉnh lớp 12 thpt
Quảng bình năm học 2 012 - 2 013
Môn thi: tin học - Vòng I
Đề thi chính thức (Khóa thi