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 thihsg 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. . Đà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. 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;