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.
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.
Đ
Ề CHÍNH THỨC
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.
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.
Đ
Ề CHÍNH THỨC
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