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 2012 - 2013 Môn thi: tin họ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 Cõu 3: (3,5 im) m nhúm bn trong Hi tri NHOMBAN.PAS 1 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 1 họ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 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 1 2 ==HẾT== 2 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 2012 - 2013 Môn thi: tin họ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; d:=i; { for j:=1 to d do begin 3 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]; j:=j+1; end; if t=m then 4 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); close(f); end; Begin 5 doc; xl; xuatstp; End. 6 . 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 ngày 11 tháng 10 năm 2 012 ) Số Báo Danh: Thời gian làm bài: 18 0. 1 2 ==HẾT== 2 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 hớng dẫn chấm I. Phng phỏp: - Giỏm kho to b d liu vo, tớ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 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 1 2 ==HẾT== 2 Sở