[r]
(1)Trang 1/
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 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);
end Bài 2: const
(2)Trang 2/ 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;
a,nga,doc:array[1 1000,1 1000] of integer; i,m,n,d,j:longint;
(3)Trang 3/ 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);