[r]
(1)Sở Giáo Dục & Đào TạoNGhệ an
TRờng THPT DTNT Quỳ HợP học sinh giỏi tỉnh lớp 12 THPTKỳ thi chọn đội tuyển dự thi năm học 2011 - 2012
M«n thi: tin học Hình thức thi: Thực hành
Thi gian: 180 phút (không kể thời gian giao đề) Bài 1:(7 điểm): Rút gọn xâu
Cho xâu s gồm chữ in thờng độ dài tối đa 250 kí tự Em viết chơng trình tạo xâu sg từ xâu s cách xóa kí tự liên tiếp giống xâu s để lại kí tự đại diện đoạn
Dữ liệu vào: Từ file văn xaugon.inp chứa xâu s gồm chữ in thờng Kết ra: Ghi file văn xaaugon.out xâu sg tìm đợc
VD:
Xaugon.inp Xaugon.out
hhooocccssiinnnhhh hocsinh Bài 2: ( điểm): Gía trị lặp
Cho trớc dÃy số n số nguyên a1, a2, an không giảm số i,j (1ijn) HÃy tìm số lần lặp lại nhiều sè d·y ai, …, aj
D÷ liƯu: Vào từ file văn DAYSO.INP gồm: - Dòng chứa số nguyên n
- Dòng thứ chøa d·y sè a1, a2, …an - Dßng thø chứa số i j
(Các số dòng cách dấu cách trống) Kết quả: Ghi file văn DAYSO.OUT có:
- Dòng chứa số lần lặp lại nhiều nhÊt cđa c¸c sè d·y a1, a2, …an - Dòng thứ chứa số lần lặp lại nhiều nhÊt cđa c¸c sè d·y ai, …, aj VÝ dô:
DAYSO.INP DAYSO.OUT
10
-1 -1 1 1 10 10 10 10
4
(2)Bµi 3: (6 ®iÓm) Bang nhac
Tại quầy băng đĩa ngời ta ghi hát theo băng khách hàng chọn hát thứ i băng phải quay băng để bỏ qua i-1 hát trớc Thời gian quay băng bỏ qua hát trớc thời gian phát hát nh Trung bình lợt khách đến hát băng đợc họ lựa chọn nh Giả sử băng chủ quán có dung l-ợng ghi vừa đủ N hát, với hát họ biết dung ll-ợng hát phát Hỏi chủ quán phải ghi hát vào băng nh tổng thời gian quay băng lt khỏch n l nhanh nht?
Dữ liệu vào: Từ file văn bannghac.inp nh sau:
- Dòng số N(1<=N<=100) thể số lợng hát - Dòng thứ N số nguyên N, số thời gian phát hát Kết ra: Ghi vào file văn bangnhac.out nh sau:
- Dòng ghi tổng số thời gian phát băng hát đợc phát lần - N dòng tiếp theo, dòng ghi số nguyên thứ tự hát thời gian tìm phát hát
VD:
Họ tên thí sinh: Số báo danh: Sở Giáo Dục & Đào TạoNGhệ an
TRng THPT DTNT Quỳ HợP học sinh giỏi tỉnh lớp 12 THPTKỳ thi chọn đội tuyển dự thi năm học 2010 - 2011
Đáp án biểu điểm Chấm
Môn: tin học
-Bài 1: (7 ®iÓm):
bangnhac.inp bangnhac.out
5 44
3 10
(3)program rutgon;
var i,n:integer; f1,f2:text; s,sg:string; procedure xuli;
begin
assign(f1,'rg.inp');reset(f1); assign(f2, 'rg.out');rewrite(f2); while not eof(f1)
begin
readln(f1,s);
sg:=' '; n:=length(s);
for i:=1 to n if s[i]<>s[i+1] then sg:=sg+s[i];write(f2,sg); end;
close(f1);close(f2);end; begin xuli; end Bài 2: ( điểm)
Const fi='dayso.inp'; fo='dayso.out';
var f:text; n,id,jd,max1,max2:integer; a:array [1 100] of byte; procedure readfile;
var i:integer;
begin assign(f,fi); reset(f); readln(f,n); end; procedure process;
var i,j,x,y,k:integer; begin
fillchar(a,sizeof(a),0);
i:=1; max1:=0; max2:=0; read(f,x); k:=0; if n=1 then begin k:=1; a[1]:=1;
end
else while i<n begin
j:=1; inc(i); read(f,y);
while (y=x) and (i<n) begin inc(j); read(f,y); inc(i) end; if i=n then
if y=x then inc(j) else begin a[k+2]:=1; end; x:=y; inc(k); a[k]:=j;
if a[k+1]=1 then inc(k); end;
read(f,id); read(f,jd); for i:=1 to k
if a[i]>max1 then max1:=a[i]; for i:=1 to k
if id<>0 then if a[i]<id then
begin id:=id-a[i]; a[i]:=0; end else begin a[i]:=a[i]-id+1; id:=0; end; jd:=n-jd+1;
for i:=k downto
if jd<>0 then if a[i]<jd then begin jd:=jd-a[i]; a[i]:=0; end else
begin a[i]:=a[i]-jd+1; jd:=0; end; for i:=1 to n
if a[i]>max2 then max2:=a[i]; close(f); end;
procedure writeresult; begin
assign(f,fo); rewrite(f);writeln(f,max1); writeln(f,max2);close(f);end; begin readfile; process;writeresult; end
Bµi 3: (6 ®iÓm)
const fi='bangnhac.inp'; fo='bangnhac.out';
var a,b:array[1 100] of integer; j,n,i,s,t:integer; f,g:text; procedure nhap;
begin
(4)begin b[i]:=i; read(f,a[i]); end; close(f);end;
procedure sx; var tg:integer; begin
for i:=1 to n-1 for j:=i+1 to n if a[i]>a[j] then begin
tg:=a[i]; a[i]:=a[j]; a[j]:=tg; tg:=b[i]; b[i]:=b[j]; b[j]:=tg; end;
end;
procedure tong; begin
s:=0; t:=0;
for i:=1 to n begin s:=s+a[i]; t:=t+s; end; end;
begin
nhap; sx; tong; s:=0;