Kỳ thi lập đội tuyển học sinh giỏi quốc gia năm học 2013-2014 môn : tin học 12 - trung học phổ thông

doc4 trang | Chia sẻ: haohao | Lượt xem: 1244 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Kỳ thi lập đội tuyển học sinh giỏi quốc gia năm học 2013-2014 môn : tin học 12 - trung học phổ thông, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
SỞ GIÁO DỤC & ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN HSG QUỐC GIA 
 NĂM HỌC 2013-2014
 ĐẮK LẮK	 MÔN : TIN HỌC 12 - THPT	

ĐÁP ÁN VÀ HƯỚNG DẪN CHẤM VÒNG 1
I. Phần chương trình nguồn
BÀI 1 –TỪ ĐỐI XỨNG
var f,g:text;st:string;

 Function tudao(st:string):string;
 Var i:integer;st1:string;
 Begin
 st1:='';
 For i:=length(st) downto 1 do
 st1:=st1+st[i];
 tudao:=st1;
 End;

 Function demtudx(st:string):integer;
 Var dem:integer;tu,tu1:string;
 Begin
 dem:=0;
 st:=st+' ';
 While length(st)>1 do
 Begin
 While st[1]=' ' do
 delete(st,1,1);
 tu:=copy(st,1,pos(' ',st));
 if st'' then
 st:=' '+st;
 tu:=' '+tu;
 While pos(tu,st)>0 do
 delete(st,pos(tu,st),length(tu)-1);
 tu1:=tudao(tu);
 If (pos(tu1,st)>0) and (st[pos(tu1,st)+length(tu1)-1]=' ') then
 inc(dem);
 demtudx:=dem;
 End;
 end;

 procedure xuly;
 Var st:string;
 Begin
 Assign(f,'bai1.inp');
 Reset(f);
 Assign(g,'bai1.out');
 Rewrite(g);
 While not eof(f) do
 Begin
 Readln(f,st);
 Writeln(g,demtudx(st));
 End;
 Close(f);
 Close(g);
 End;

 Begin
 xuly;
 End.

BÀI 2 – Biểu thức zero

Program Zero_sum;
Type MangStr = array[1..15] of string;
Const Fi ='BAI2.INP';
Fo ='BAI2.OUT';
Dau : array[1..3] of string[1] = ('-','+','');
S : array[1..9] of char =('1','2','3','4','5','6','7','8','9');
ChuSo = ['1'..'9'];

Var N,k,dem: byte;
D : array[2..9] of string[1];
F : Text;
St : String;
M : MangStr;

Procedure Write_out;
Var i : byte;
Begin
Assign(F,Fo); Rewrite(F);
Writeln(F,dem);
For i:= 1 to dem do writeln(F,M[i],' = 0');
Close(F); Halt;
End;

Procedure Read_inp;
Begin
Assign(F,Fi); Reset(F);
Read(F,N); Close(F);
If N < 3 then write_out;
End;

Function DocSo(S : String): longint;
Var M : longint;
t : byte;
Begin
M:= 0; t:= 0;
If S[k] in ['+','-'] then
begin
t:= k; Inc(k);
end;
While (k<= length(S)) and (s[k] in ChuSo) do
begin
m:= m*10 + ord(s[k]) - ord('0');
Inc(k);
end;
If (t 0) and (S[t] = '-') then DocSo:= -M
else DocSo:= M;
End;

Procedure Test;
Var St : string;
i : byte;
T : longint;
Begin
St:= '1'; k:= 1; T:= 0;
For i:= 2 to N do St:= St + D[i] + S[i];
While k < length(St) + 1 do T:= T + DocSo(St);
If T = 0 then
begin
Inc(dem); M[dem]:= St;
end;
End;

Procedure Try(i: byte);
Var j : byte;
Begin
For j:= 1 to 3 do
begin
D[i]:= Dau[j];
If i = N then Test else try(i+1);
end;
End;

BEGIN
Read_inp;
Try(2);
Write_out;
END.

BÀI 3 – TAM GIÁC SỐ
{ QUY HOẠCH ĐỘNG} 
Program bai3;
Uses crt;
Type mang = array[1..100,1..100] of integer;
Var
 f:text;
 i,j,n:integer;
 a,b:mang;
Procedure Input;
Begin
clrscr;
Assign(f,'bai3.inp');
reset(f);
readln(f,n);
for j:=1 to n do
 begin
 for i:=2 to j+1 do
 read(f,a[j,i]);
 end;
close(f);
end;
{----------------------------------}
Function Max(m,n:integer):integer;
Begin
 if n>m then Max:=n
 else Max:=m;
end;
{----------------------------------}
Procedure MakeArrayOfQHD;
Begin
 b[1,2]:=a[1,2];
 for j:=1 to n do b[j,1]:=-maxint;
 for i:=3 to n do b[1,i]:=-maxint;
 for j:=2 to n do
 begin
 for i:=2 to j+1 do
 b[j,i]:=a[j,i]+max(b[j-1,i],b[j-1,i-1]);
 end;
end;
{-----------------------------------}
Procedure FindMax;
var max:integer;
Begin
 max:=b[n,1];
 for i:=2 to n do
 if b[n,i]>max then max:=b[n,i];
 assign(f,'bai3.out');rewrite(f);
 write(f,max);
 close(f);
end;
{------------------------------------}
BEGIN
 Input;
 makearrayofQHD;
 FindMax;
END.
II. Hướng dẫn chấm.
Bài 1: 3 Test, mỗi test đúng cho 2 điểm. 
Bài 2: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mẫu ví dụ. 
Bài 3: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mẫu ví dụ 
Chú ý: Kết quả có thể có nhiều phương án khác nhau do đó yêu cầu giám khảo xem xét kỹ khi chấm bài.
---- Hết ----

File đính kèm:

  • docdap an chon doi tuyen hsg tin 2013 V1.doc