ĐỀ THI CHỌN HỌC SINH GIỎI TỈNH NĂM HỌC 2011-2012 MÔN TIN HỌC LỚP 12 THPT - SỞ GIÁO DỤC VÀ ĐÀO TẠO ĐẮK LẮK
SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI HỌC SINH GIỎI TỈNH NĂM HỌC 2011-2012 ĐẮK LẮK MÔN : TIN HỌC 12 - THPT (Thời gian: 180 phút, không kể thời gian giao đề) Ngày thi: 10/11/2011 Ghi chú : Đề thi này gồm 2 trang. Bài File bài làm D li uữ ệ vào K t quế ả Bài 1: Tính tổng BAI1.PAS BAI1.INP BAI1.OUT Bài 2: Siêu nguyên tố BAI2.PAS Nh p t phímậ ừ Xu t ra màn ấ hình Bài 3: Tô màu BAI3.PAS BAI3.INP BAI3.OUT Bài 1: Tính t ngổ (5 đi m).ể Trên m t màn hình l n, ng i ta l n l t cho hi n ra các s c a m tộ ớ ườ ầ ượ ệ ố ủ ộ dãy g m N s nguyên không âm aồ ố 1 , a 2 , …, a N và c l p đi l p l i nh thứ ặ ặ ạ ư ế (ngh a là sau khi aĩ i xu t hi n vài giây đ n l t aấ ệ ế ượ i+1 xu t hi n, s xu t hi nấ ệ ố ấ ệ sau a N là a 1 ). Yêu c u:ầ B n đ c đ ngh tính t ng c a K s nguyên liên ti p xu t hi nạ ượ ề ị ổ ủ ố ế ấ ệ trên màn hình b t đ u t s nguyên th B. ắ ầ ừ ố ứ D li u vàoữ ệ : Ch a trong file BAI1.INP g m hai dòng:ứ ồ + Dòng đ u tiên ghi ba s nguyên N, K, và B, 1 ầ ố ≤ N ≤10 4 ; 1 ≤ K ≤ 2. 10 4 ; 1 ≤ B ≤ 10 9 . + Trong N dòng sau, dòng th i ch a s aứ ứ ố i (a i < 2.10 9 ). D li u raữ ệ : Ghi ra file BAI1.OUT m t s là t ng tìm đ c.ộ ố ổ ượ Ví d :ụ BAI1.INP BAI1.OUT 5 7 6 2 3 6 7 9 32 Bài 2(6 điểm) - Siêu nguyên tố S siêu nguyên t là s nguyên t mà khi b m t s tu ý các ch s bên ố ố ố ố ỏ ộ ố ỳ ữ ố ph i c a nó thì ph n còn l i v n t o thành m t s nguyên t .ả ủ ầ ạ ẫ ạ ộ ố ố Ví d 7331 là m t s siêu nguyên t có 4 ch s vì 733, 73, 7 c ng là các ụ ộ ố ố ữ ố ũ s nguyên t .ố ố Vi t ch ng trình nh p d li u vào là m t s nguyên N (0< N <10) và đ aế ươ ậ ữ ệ ộ ố ư ra k t qu là các s siêu nguyên t có N ch s cùng s l ng c a chúng.ế ả ố ố ữ ố ố ượ ủ CHÍNH TH CĐỀ Ứ Bài 3(9 điểm) -Tô màu Cho một bảng gồm các ô vuông kích thước M x N (M, N ≤100), trong đó có một số ô đen, còn lại là các ô trắng. Yêu cầu: Hãy tô màu tất cả các ô trắng bằng hai màu xanh và vàng sao cho trên mỗi dòng cũng như trên mỗi cột số các ô màu xanh và vàng lệch nhau không quá 1. Dữ liệu vào: Được cho trong file văn bản BAI3.INP - Dòng đầu ghi hai số M, N - M dòng tiếp theo mỗi dòng ghi N số, gồm các số 0 hoặc 1 biểu diễn bảng ô vuông, với 0 biểu thị ô trắng, 1 biểu thị ô đen. Kết quả: Ghi ra file văn bản BAI3.OUT gồm M dòng, mỗi dòng gồm N ký tự viết liền nhau biểu diễn trạng thái màu đã tô của bảng với D: màu đen, X: màu xanh, V: màu vàng. Ví dụ: BAI3.INP 6 4 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 BAI3.OUT DVDX DXXV XDVD DDVX VDXD DXDV ------- Hết -------- Ghi chú: Giám thị coi thi không giải thích gì thêm. SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI HỌC SINH GIỎI TỈNH NĂM HỌC 2011-2012 ĐẮK LẮK MÔN : TIN HỌC 12 - THPT (Thời gian: 180 phút, không kể thời gian giao đề) Ngày thi: 10/11/2011 Ghi chú : Đề thi này gồm 2 trang. Bài File bài làm D li uữ ệ vào K t quế ả Bài 1: Tính tổng BAI1.PAS BAI1.INP BAI1.OUT Bài 2: Siêu nguyên tố BAI2.PAS Nh p t phímậ ừ Xu t ra màn ấ hình Bài 3: Tô màu BAI3.PAS BAI3.INP BAI3.OUT Bài 1: Tính t ngổ (5 đi m).ể Trên m t màn hình l n, ng i ta l n l t cho hi n ra các s c a m tộ ớ ườ ầ ượ ệ ố ủ ộ dãy g m N s nguyên không âm aồ ố 1 , a 2 , …, a N và c l p đi l p l i nh thứ ặ ặ ạ ư ế (ngh a là sau khi aĩ i xu t hi n vài giây đ n l t aấ ệ ế ượ i+1 xu t hi n, s xu t hi nấ ệ ố ấ ệ sau a N là a 1 ). Yêu c u:ầ B n đ c đ ngh tính t ng c a K s nguyên liên ti p xu t hi nạ ượ ề ị ổ ủ ố ế ấ ệ trên màn hình b t đ u t s nguyên th B. ắ ầ ừ ố ứ D li u vàoữ ệ : Ch a trong file BAI1.INP g m hai dòng:ứ ồ + Dòng đ u tiên ghi ba s nguyên N, K, và B, 1 ầ ố ≤ N ≤10 4 ; 1 ≤ K ≤ 2. 10 4 ; 1 ≤ B ≤ 10 9 . + Trong N dòng sau, dòng th i ch a s aứ ứ ố i (a i < 2.10 9 ). D li u raữ ệ : Ghi ra file BAI1.OUT m t s là t ng tìm đ c.ộ ố ổ ượ Ví d :ụ BAI1.INP BAI1.OUT 5 7 6 2 3 6 7 9 32 Bài 2(6 điểm) - Siêu nguyên tố S siêu nguyên t là s nguyên t mà khi b m t s tu ý các ch s bên ố ố ố ố ỏ ộ ố ỳ ữ ố ph i c a nó thì ph n còn l i v n t o thành m t s nguyên t .ả ủ ầ ạ ẫ ạ ộ ố ố Ví d 7331 là m t s siêu nguyên t có 4 ch s vì 733, 73, 7 c ng là các ụ ộ ố ố ữ ố ũ s nguyên t .ố ố Vi t ch ng trình nh p d li u vào là m t s nguyên N (0< N <10) và đ aế ươ ậ ữ ệ ộ ố ư ra k t qu là các s siêu nguyên t có N ch s cùng s l ng c a chúng.ế ả ố ố ữ ố ố ượ ủ CHÍNH TH CĐỀ Ứ Bài 3(9 điểm) -Tô màu Cho một bảng gồm các ô vuông kích thước M x N (M, N ≤100), trong đó có một số ô đen, còn lại là các ô trắng. Yêu cầu: Hãy tô màu tất cả các ô trắng bằng hai màu xanh và vàng sao cho trên mỗi dòng cũng như trên mỗi cột số các ô màu xanh và vàng lệch nhau không quá 1. Dữ liệu vào: Được cho trong file văn bản BAI3.INP - Dòng đầu ghi hai số M, N - M dòng tiếp theo mỗi dòng ghi N số, gồm các số 0 hoặc 1 biểu diễn bảng ô vuông, với 0 biểu thị ô trắng, 1 biểu thị ô đen. Kết quả: Ghi ra file văn bản BAI3.OUT gồm M dòng, mỗi dòng gồm N ký tự viết liền nhau biểu diễn trạng thái màu đã tô của bảng với D: màu đen, X: màu xanh, V: màu vàng. Ví dụ: BAI3.INP 6 4 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 BAI3.OUT DVDX DXXV XDVD DDVX VDXD DXDV ------- Hết -------- Ghi chú: Giám thị coi thi không giải thích gì thêm. SỞ GIÁO DỤC & ĐÀO TẠO KỲ THI HỌC SINH GIỎI TỈNH NĂM HỌC 2011-2012 ĐẮK LẮK MÔN : TIN HỌC 12 - THPT ĐÁP ÁN VÀ HƯỚNG DẪN CHẤM ĐỀ CHÍNH THỨC I. Phần chương trình nguồn Bài 1(5 điểm) - Tính tổng program BAI1; const fi='BAI1.inp'; fo='BAI1.out'; nmax=10003; var a:array[1 nmax]of int64; n,k,b:longint; kq:int64; f,g:text; procedure nhapdulieu; var i:integer; begin assign(f,fi); reset(f); readln(f,n,k,b); for i:=1 to n do readln(f,a[i]); close(f); end; procedure xuly; var i,j:longint; begin kq:=0; for i:=b to b+k-1 do kq:=kq+a[(i-1) mod N +1]; assign(g,fo); rewrite(g); write(g,kq); close(g); end; Begin nhapdulieu; xuly; End. Bài 2(6 điểm) - Siêu nguyên tố var a,b: array [1 100] of longint; N,i,k,ka,kb,cs: byte; Function Prime(N: longint): boolean; Var i: longint; Begin If (N=0) or (N=1) then Prime:=false Else Begin i:=2; While (N mod i <> 0) and (i <= Sqrt(N)) do Inc(i); If i > Sqrt(N) then Prime:=true Else Prime:=false; End; End; BEGIN Write ('Nhap N: '); Readln (N); ka:=1; a[ka]:=0; For i:=1 to N do Begin Kb:=0; For k:=1 to ka do For cs:=0 to 9 do If Prime(a[k]*10+cs) then Begin Inc(kb); b[kb]:=a[k]*10+cs; end; ka:=kb; For k:=1 to ka do a[k]:=b[k]; end; For k:=1 to ka do Write(a[k]:10); Writeln; Writeln('Co tat ca ',ka,' so sieu nguyen to co ',N,' chu so.'); Readln; END. Bài 3(9 điểm) -Tô màu const tfi = 'BAI3.INP'; tfo = 'BAI3.OUT'; maxN = 101; var fi, fo : text; M,N : integer; a : array[1 maxN,1 maxN] of byte; bac : array[1 2*maxN] of integer; procedure Docdl; var i,j: integer; begin assign(fi,tfi); reset(fi); readln(fi,M,N); for i:=1 to M do begin for j:=1 to N do read(fi,a[i,j]); readln(fi); end; close(fi); end; function DinhBacLe: integer; var i: integer; begin for i:=1 to M+N do if odd(bac[i]) then begin DinhBacLe:=i; exit; end; DinhBacLe:=0; end; function Next(u: integer): integer; var v: integer; begin if u<=M then begin for v:=1 to N do if a[u,v]=0 then begin Next:=v+M; exit; end; end else begin for v:=1 to M do if a[v,u-M]=0 then begin Next:=v; exit; end; end; Next:=0; end; procedure ToMau(xp: integer); var u,v,color: integer; begin color:=2; u:=xp; repeat v:=Next(u); if v>0 then begin if u<=M then a[u,v-M]:=color else a[v,u-M]:=color; bac[u]:=bac[u]-1; bac[v]:=bac[v]-1; u:=v; color:=5-color; end; until v=0; end; function DinhConCanh: integer; var i: integer; begin for i:=1 to M+N do if bac[i]>0 then begin DinhConCanh:=i; exit; end; DinhConCanh:=0; end; procedure Solve; var i,j,u: integer; begin for i:=1 to M do begin bac[i]:=0; for j:=1 to N do bac[i]:=bac[i]+(1-a[i,j]); end; for i:=M+1 to M+N do begin u:=i-M; bac[i]:=0; for j:=1 to M do bac[i]:=bac[i]+(1-a[j,u]); end; {Tim cac duong xuat phat tu dinh le} repeat u:=DinhBacLe; if u>0 then ToMau(u); until u=0; {Tim cac duong xuat phat tu dinh bac chan} repeat u:=DinhConCanh; if u>0 then ToMau(u); until u=0; end; procedure Inkq; var i,j: integer; begin assign(fo,tfo); rewrite(fo); for i:=1 to M do begin for j:=1 to N do case a[i,j] of 1: write(fo,'D'); 2: write(fo,'X'); 3: write(fo,'V'); end; writeln(fo); end; close(fo); end; BEGIN Docdl; Solve; Inkq; END. II. Phần hướng dẫn chấm Bai 1 (5 đ): Test chương trình với 5 dữ liệu nhập khác nhau. Mỗi lần đúng cho 1 điểm. Bai 2 (6 đ): Test chương trình với 5 lần : n=1 5 N=1 có 4 số; N=2 có 9 số; N=3 có 14 số; N=4 có 16 số; N=5 có 15 số. Chú ý trong mỗi trường hợp cần kiểm tra các số tìm được có thỏa mãn là số siêu nguyên tố hay không. Mỗi test đúng cho 1 điểm. Bai 3 (9 đ): Có 9 test ( lưu trong đĩa CD) Mỗi test đúng cho 1 điểm ---- Hết ---- . SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI HỌC SINH GIỎI TỈNH NĂM HỌC 201 1-2 012 ĐẮK LẮK MÔN : TIN HỌC 12 - THPT (Thời gian: 180 phút, không kể thời gian giao đề) . Giám thị coi thi không giải thích gì thêm. SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI HỌC SINH GIỎI TỈNH NĂM HỌC 201 1-2 012 ĐẮK LẮK MÔN : TIN HỌC 12 - THPT (Thời gian: