Các điểm liền kề trên cùng một hàng hoặc một cột có thể được nối với nhau bởi một đoạn thẳng có kích thước bằng 1.. Xem hình dưới:.[r]
(1)SỞ GD&ĐT NINH BÌNH ĐỀ THI CHỌN HỌC SINH GIỎI LỚP THCS Năm học 2012 – 2013
MÔN:TIN HỌC
(Thời gian làm 150 phút, không kể thời gian giao đề) Đề thi gồm 03 câu, 02 trang
Yêu cầu kỹ thuật:
* Các file chương trình file liệu đặt tên xác sau:
Tên File làm Dữ liệu vào Dữ liệu Time
Bài 1: Số siêu nguyên tố SNT.PAS SNT.INP SNT.OUT 2s
Bài 2: Trò chơi với băng số DIV.PAS DIV.INP DIV.OUT 2s
Bài 3: Bài tốn vng SQUARE.PAS SQUARE.INP SQUARE.OUT 2s
Bài 1: Số siêu nguyên tố (8 điểm) File bài làm: SNT.PAS
Tại Vương quốc Byte xinh đẹp, người ln chọn cho số, theo họ số nguyên tố số mang lại may mắn tìm số siêu nguyên tố may mắn Số siêu nguyên tố số nguyên tố mà bỏ số tùy ý chữ số bên phải phần lại số nguyên tố Số 2333 số siêu nguyên tố 2333 số nguyên tố 233, 23, số nguyên tố
Dữ liệu vào:SNT.INP Chứa số nguyên dương n (n ≤ 109)
Dữ liệu ra: SNT.OUT Nếu N siêu nguyên tố ghi giá trị 1, ngược lại ghi giá trị 0 Ví dụ:
Bài Trò chơi với băng số (8 điểm) File bài làm DIV.PAS
Cho băng số gồm n số nguyên dương, số viết ô Hãy cắt băng số thành nhiều đoạn cho tổng phần tử đoạn
Dữ liệu vào: DIV.INP + Dòng đầu ghi n (n ≤ 1000)
+ Dòng ghi n số nguyên dương a1, a2, , an (các số nằm dòng cách dấu cách ≤ 1000) Dữ liệu ra: DIV.OUT Ghi K số đoạn cần chia
Ví dụ:
DIV.INP DIV.OUT Giải thích
8
10 2
3 Đoạn 1: 10 Đoạn 2: + + =10 Đoạn 3: + + + = 10 ĐỀ THI CHÍNH THỨC
SNT.INP SNT.OUT
2333
SNT.INP SNT.OUT
13
SNT.INP SNT.OUT
2333
SNT.INP SNT.OUT
13
(2)Bài 3: Bài tốn vng (4 điểm) File bài làm: SQUARE.PAS
Cho bảng chữ nhật gồm m * n điểm (gồm m hàng ngang hàng có n điểm) Các điểm liền kề hàng cột nối với đoạn thẳng có kích thước Trên hàng có nhiều n - đoạn thẳng nằm ngang nối điểm liền nhau, cột có nhiều m - đoạn thẳng thẳng đứng nối điểm liền Xem hình dưới:
Với bảng ta có hàng ngang hàng điểm Các đoạn thẳng nối chúng tạo nên ô vuông Để mô tả bảng người ta dùng hai mảng nhị phân: mảng Ngang
diễn tả đoạn thẳng nằm ngang, mảng Dọc biểu diễn đoạn thẳng thẳng đứng Trong mảng, số diễn tả có đoạn thẳng nối hai điểm liên tiếp, số diễn tả khơng có đoạn thẳng nối hai điểm liên tiếp
u cầu: Lập trình đếm số lượng vng mà cạnh có độ dài tạo đoạn nối có bảng cho
Dữ liệu vào: SQUARE.INP
+ Dòng gồm số nguyên dương m, n (m, n ≤ 1000) Hai số cách khoảng trắng
+ m dòng diễn tả đoạn thẳng nằm ngang (như bảng ngang mô tả phần trên) Hai số liền cách khoảng trắng
+ m - dòng diễn tả đoạn thẳng thẳng đứng (như bảng dọc mô tả phần trên) Hai số liền cách khoảng trắng
Dữ liệu : SQUARE.OUT
+ Số lượng vng có độ dài cạnh Ví dụ:
SQUARE.INP SQUARE.OUT 3
1 1 0 1 1 1 1 0 1 0
2
-HẾT -
Họ tên thí sinh : Số báo danh Họ tên, chữ ký: Giám thị 1: Họ tên, chữ ký: Giám thị 2:
Ngang: Dọc:
1 1 0 1 1
(3)SỞ GD&ĐT NINH BÌNH HDC ĐỀ THI CHỌN HSG LỚP THCS Năm học 2012 – 2013
MÔN: Tin học
(Hướng dẫn chấm gồm 03 trang)
I HƯỚNG DẪN CHUNG
Chấm tự đô ̣ng bằng phần mềm AMM2 với các bô ̣ test có sẵn đĩa CD
II ĐÁP ÁN VÀ THANG ĐIỂM 1 Cấu trú c bô ̣ test và thang điểm
Bài Test Điểm
Bài Gồ m 16 bộ test, mỗi bô ̣ 0.5 điểm điểm
Bài Gồ m 16 bộ test, mỗi bô ̣ 0.5 điểm điểm
Bài Gồ m 16 bộ test, mỗi bô ̣ 0.25 điểm điểm
2 Đáp án
-Hết - Bài 1:
Const fi = 'SNT.INP'; Fo = 'SNT.OUT';
var n: longint; f:text; kq: boolean; function nt(n: longint):boolean;
var i: longint; begin
if n<2 then exit(false); if n=2 then exit(true);
for i:=2 to trunc(sqrt(n))
if n mod i = then exit(false); exit(true);
end; begin
assign(f,fi); reset(f); readln(f,n);
close(f); kq:= true; while n<>0 begin
kq:= kq and nt(n);
n:= n div 10; end;
assign (f,fo); rewrite(f);
if kq then write(f,'1') else write(f,'0'); close(f);
(4)tfi='DIV.INP'; tfo='DIV.OUT'; var n: longint;
a, s: array[0 1001] of longint; res: longint;
function ok(t: longint): boolean; var i,u,tong: longint;
begin
tong:=0;
for i:=1 to n if a[i]<>0 then begin
tong:=tong+a[i];
if tong=t then tong:=0; end;
exit(tong=0); end;
procedure main;
var j,u,i,k,t: longint; begin
assign(input,tfi); reset(input); assign(output,tfo); rewrite(output); read(n);
for i:=1 to n read(a[i]); s[0]:=0;
for i:=1 to n s[i]:=s[i-1]+a[i];
for k:=n downto if s[n] mod k=0 then begin
t:=s[n] div k; if ok(t) then begin
res:=k; break; end;
end;
writeln(res);
close(input); close(output); end;
BEGIN main; END Bài
const fi='SQUARE.INP'; fo='SQUARE.OUT'; var f:text;
(5)i,m,n,d,j:integer; procedure nhap;
var i,j:integer; begin
assign(f,fi); reset(f); readln(f,m,n);
for i:=1 to m begin
for j:=1 to n-1 read(f,nga[i,j]); readln(f);
end;
for i:=1 to m-1 begin
for j:=1 to n read(f,doc[i,j]); readln(f);
end; end; begin nhap; d:=0;
for i:=1 to m-1 for j:=1 to n-1
if nga[i,j]+nga[i+1,j]+doc[i,j]+doc[i,j+1]=4 then inc(d);
assign(f,fo); rewrite(f); write(f,d);