Tải bản đầy đủ (.pdf) (2 trang)

Đáp án HSG Tin học lớp 11 Quảng Bình 2015-2016 vòng 1 - Học Toàn Tập

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (278.68 KB, 2 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

1



<b>HƯỚNG DẪN VÀ ĐÁP ÁN CHẤM </b>



<b>ĐỀ THI CHỌN HSG LỚP 11 THPT – VÒNG I NĂM HỌC 2015-2016 </b>


<b>Mơn: Tin học </b>



<b>Khóa thi ngày 23 - 3 - 2015 </b>


<b>I- Phương pháp: </b>



- Giám khảo tạo bộ dữ liệu vào, tính tốn kết quả. Thực hiện chương trình của


học sinh và so sánh kết quả.



- Giám khảo có thể sử dụng chương trình gợi ý dưới đây để tính tốn kết quả


của dữ liệu vào.



- Đối với câu 1: Giám khảo phải tạo được 06 bộ test, chương trình học sinh


đúng 01 bộ test giám khảo cho 0.5 điểm. Trong 06 bộ test giám khảo phải tạo được


02 bộ test có N>=70000000.



- Đối với câu 2:



+ Giám khảo phải tạo được 07 bộ test, chương trình học sinh đúng 01 bộ test


thì giám khảo cho 0.5 điểm. Trong 07 bộ test giám khảo phải tạo được 02 bộ test


có K >= 700000.



+ Thời gian thực hiện chương trình khơng q 3 giây với tất cả các bộ test


- Đối với câu 3:



+ Giám khảo phải tạo được 07 bộ test, chương trình học sinh đúng 01 bộ test


thì giám khảo cho 0.5 điểm.




+ Giám khảo phải tạo được 01 bộ test có N+M >= 300.



<b>II- Chương trình gợi ý: </b>


Program nguyento;


Const fi='NGUYENTO.in6';
fo='NGUYENTO.gv6';
Var


I,n:longint; f:text;
KT:boolean;


BEGIN


assign(f,fi);
reset(f);
readln(f,n);
close(f);
kt:=true;


if n=1 then kt:=false;


for i:=2 to trunc(sqrt(n)) do
if n mod i = 0 then kt:=false;
assign(f,fo);


rewrite(f);


if kt then write(f,'Y') else write(f,'N');


close(f);


END.


PROGRAM DOISO;


CONST fi='doiso.in7';
fo='doiso.gv7';


VAR a: array['0'..'9'] of longint;
i,n:longint;


x:char;
f:text;
BEGIN


fillchar(a,sizeof(a),0);


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

2



for i:=1 to n do
begin


read(f,x);
a[x]:=a[x]+1;
end;


close(f);
assign(f,fo);
rewrite(f);



for x:='1' to '9' do
if a[x]>0 then


for i:=1 to a[x] do
write(f,x);


close(f);
END.


program bai;


Const fi='KYTU.in7';
fo='KYTU.GV7';
Var m,n,k:longint;
X,Y:string;


function Max(a,b: integer): integer;


begin if a > b then Max := a else Max := b; end;
function XauChung(var x,y: string): integer;
var m,n,i,j: integer;


a,b: array[0..255] of integer;
begin


m := length(x); n := length(y);
fillchar(a,sizeof(a),0);


for i := 1 to m do


begin


for j := 1 to n do


if x[i] = y[j] then b[j] := a[j-1]+1
else b[j] := Max(a[j],b[j-1]);
a := b;


end;


XauChung := a[n];
end;


Procedure doc;
Var f:text;
Begin


Assign(f,fi);
Reset(f);
Readln(f,x);
readln(f,y);
Close(f);
End;


Procedure ghi;
Var f:text;
Begin


Assign(f,fo);
Rewrite(f);


Write(f,m);
Close(f);
End;


BEGIN
doc;


m:=length(x);
n:=length(y);
k:=xauchung(x,y);
m:=m+n-2*k;


</div>

<!--links-->

×