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

Đề thi HSG Tin 8-9

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 (88.66 KB, 4 trang )

Sở Giáo Dục Đào Tạo
Tổngquan
Kì Thi Chọn HsG LớP 9 thcs Năm Học 2008-2009
Đề thi môn :Tin học
(Thời gian 150 phút không kể thời gian giao đề)
(Đề thi gồm 2 trang )
Tên bài Tên fie chơng trình Tên file dữ liệu Tênfile kết quả thời gian
Bài 1 Xếp diêm hms.pas hms.inp hms.out 1s/test
Bài 2 Chu kỳ xâu cyc.pas cyc.inp cyc.out 1s/test
Bài 3 Hoán vị có điều kiện per.pas per.inp per.out 1s/test
Lập trình giải các bài toán sau:
Bài 1: Xếp diêm (4 điểm)
Với các que diêm có thể xếp đợc các số nguyên không âm, các chữ số thập phân có cách xếp nh hình vẽ
Bờm có N que diêm và muốn xếp diêm thành bộ số chỉ giờ dạng hh:mm:ss( chuẩn 24 giờ ) sao cho dùng hết
đúng N que diêm và thời điểm biểu diễn đợc là muộn nhất trong ngày .
Dữ liệu (file hms.inp) : Ghi duy nhất số nguyên N (1=<n<=42)
Kết quả (file hms.out): Ghi thời điểm biểu diễn đợc theo định dạng hh:mm: ss(ghi số -1 nếu không có cách sắp
sếp )
Ví dụ:
hms.inp hms.out
12 11:11:11
Bài 2:Chu kì xâu(4 điểm )
Một xâu P đợc gọi là tiền tố của xâu A nếu tồn tại xâu B sao cho xâu PB (ghép B vào sau P) bằng xâu A. Một
tiền tố P của A đợc gọi là tiền tố thực sự nếu Pp PA
Xâu Q đợc gọi là xâu chu kì của xâu A nếu Q là một tiền tố thực sự cáu A và A là tiền tố của xâu QQ.Chẳng
hạn abab và ababab là hai xâu chu kì của xâu abababa.Chu kì cực đại của A là xâu vhu kì dài nhất của hoặc xâu
rỗng nếu A không có sâu chu kì .
cho một xâu S chỉ gồm các chữ cái a...z hãy tính tổng dộ dài chu kì cực đại của tất cả các tiền tố của S .
Dữ liệu (cyc.inp)
- Dòng 1 số nguyên N( 1<=N<=250 ) - đọ dài của xâu S
- Dòng 2 xâu S


Kết quả (cyc.out):
- Dòng 1: số nguyên kết quả
- Ví dụ:
cyc.inp cyc.out
8
babababa
24
Giải thích ví dụ:
Tiền tố Chu kì cực đại
b
ba
bab ba
baba ba
babab baba
bababa baba
bababab bababa
bababababa bababa
đề chính thức
Bài 3: Hoán vị có điều kiện ( 2 điểm)
Hoán vị của N sốnguyên dơng dầu tiên là dãy A =( a1 a2 a3 ,..., an) trong đó mỗi số nguyên 1,2,...,n dều xuất
hiện đúng một lần. Một dẫycon của A là dãy nhận đơc sau khi loại bỏ 0,1,2,.. phần tử của A và dữ nguyên phần
còn lại .
xét N= 4 và A=(1,4,3,2) .Độ dài của dãy con tăng dài nhất của A là 2 .A có 3 dãy con tăng độ dài là 2 là(1,4 ),
(1,3); (1,2).Dộ dài của dãy con giảm dài nhất của A là 3 .A chỉ có 1 dãy con giảm dài nhất là 3 (4,3,2).
Cho N và hai số nguyên P.Q ,hãy sxác định hoán vị của N số nguyên dơng đàu tiên có thứ tự từ điển nhỏ nhất
thỏa mãn độ dài của dãy con tăng dài nhất , độ dài của dãy con giảm dài nhất của hoán vị đó tơng ứng là P và
Q .
Dữ liệu (per.inp)
- Dòng 1: 3 số nguyên N, P,Q( 1<=N,P,Q <=30000 ) dữ liệu đảm bảo có nghiệm
- Dòng 2 xâu S

Kết quả (per.out):
- Dòng 1: N số nguyên là hoán vị thỏa mãn đề bài
- Ví dụ:
per.inp per.out
4 3 2 1 4 3 2
Giải thích ví dụ:
Còn có các hoán vị khác, chẳng hạn (2,4,3,1) cũng thỏa mãn độ dài dãy con tăng dài nhất bằng 2 , độ
dài dãy con giảm dài nhất bằng 3 nhng hoán vị (1,4,3,2) có thứ tự từ điển nhỏ nhất .
....Hết .......
Cán bộ coi thi không giải thích gì thêm
const f:array[0..9]of byte=(6,2,5,5,4,5,6,3,7,6);
fo='hms.inp';
go='hms.out';
var i:array[1..6]of byte;
n,j:byte;
f1,g:text;
s:array[1..6]of string;
s1,max:string;
t1:longint;
t2:longint absolute $00:$46c;
begin
t1:=t2;
assign(f1,fo);reset(f1);
assign(g,go);rewrite(g);
readln(f1,n);
if n<12 then write(g,-1)
else
begin
max:='';
for i[1]:=0 to 9 do

for i[2]:=0 to 9 do
for i[3]:=0 to 9 do
for i[4]:=0 to 9 do
for i[5]:=0 to 9 do
for i[6]:=0 to 9 do
begin
s1:='';
for j:=1 to 6 do
begin
str(i[j],s[j]);
s1:=s1+s[j];
end;
if (f[i[1]]+f[i[2]]+f[i[3]]+f[i[4]]+f[i[5]]+f[i[6]]=n)and(max<s1)
and(s1[1]+s1[2]<='24')and(s1[3]+s1[4]<='60')and(s1[5]+s1[6]<='60')
then max:=s1;
end;
if max='' then write(g,-1)
else write(g,max[1],max[2],':',max[3],max[4],':',max[5],max[6]);
end;
writeln(g);
write(g,(t2-t1)/18.2:0:9);
close(f1);close(g);
end.
{bai 3 thi hsg 2009}
const fo='per.inp';
go='per.out';
var d,i,p,q,n:longint;
f,g:text;
begin
assign(f,fo);reset(f);

assign(g,go);rewrite(g);
readln(f,n,p,q);
if p+q-1= n then
begin
for i:=1 to n-q do
begin
write(g,i,' ');
if i mod 255 =0 then writeln(g);
end;
for I:=n downto n-q+1 do
begin
write(g,i,' '); inc(d);
if d mod 255 =0 then writeln(g);
end;
end;
close(f);close(g);
end.
const fo='per.inp';
go='per.out';
var i,n,p,q:longint;
kt:boolean;
f,g:text;
a,b,c:array[1..10000]of integer;
procedure xuat;
var max1,max2,j:integer;
begin
max1:=0;max2:=0;
c[1]:=1;
for i:=2 to n do
begin

c[i]:=1;
for j:=1 to i-1 do
if a[i]>a[j] then c[i]:=c[j]+1;
if max1<c[i] then max1:=c[i];
end;
c[n]:=1;
for i:=n downto 1 do
begin
c[i]:=1;
for j:=n downto i+1 do
if a[i]>a[j] then c[i]:=c[j]+1;
if max2<c[i] then max2:=c[i];
end;
if (max1=p)and(max2=q) then
begin
for i:=1 to n do write(g,a[i],' ');
kt:=true;
end;
end;
procedure thu(i:integer);
var j:integer;
begin
if (i>n) then xuat
else
begin
if kt then exit
else
begin
for j:=1 to n do
if (b[j]=0) then

begin;
a[i]:=j;
b[j]:=1;
thu(i+1);
b[j]:=0;
end;
end;
end;
end;
begin
assign(f,fo);reset(f);
assign(g,go);rewrite(g);
readln(f,n,p,q);
kt:=false;
thu(1);
close(f);close(g);
end.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×