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

Dap an de thi HSG Tin cua Bac Lieu nam 2012

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 (84.21 KB, 2 trang )

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

<b>SỞ GD&ĐT BẠC LIÊU</b> <b>KỲ THI HSG ĐBSCL LẦN THỨ 16 - NĂM 2012</b>


<b>Đề thi đề nghị</b> <b>Môn: Tin học</b>


(Gồm 3 câu) Thời gian: 180 phút (Không kể thời gian giao đề)


<b>HƯỚNG DẪN CHẤM:</b>
<b>Câu 1 (6 điểm) - Cặp số song sinh</b>


Ta đặt c= a xor b hoặc đặt c= |a-b| cũng được (mặc dù kết quả ra khơng
giống nhau, nhưng tính chất cần xét thì giống nhau)


Xét c: Nếu c = 2k<sub> thì a, b chính là cặp số song sinh. Ngược lại thì khơng.</sub>
Cách tạo test:


- Cho 2 số a và b bằng nhau.


- Cộng vào a hoặc b 1 số dạng 2k<sub> (rất dễ tính nhẫm) ta được cặp</sub>
số song sinh.


- Cộng vào a hoặc b 1 số dạng <> 2k<sub> ta được 2 số không phải là</sub>
cặp số song sinh.


Cách chấm:


- Vì trong lúc tạo bộ input ta đã nhẫm tính được kết quả nên việc
chấm chỉ cịn là so sánh kết quả.


<b>Câu 2 (7 điểm) - Điền khuyết xâu kí tự</b>


Ta xóa bớt trong a và b 1 vài ký tự để thu được xâu kí tự con giống nhau


dài nhất. Sau đó ta điền khuyết những ký tự dư ra bên a vào bên b và ngược lại.


Bài này rất khó tạo ra những test khó. Ngoại trừ ta cho 2 xâu bất kỳ rồi
viết chương trình kiểm tra lại thì được. Cịn việc nhẫm tính thì chỉ tạo ra được
các test đơn giản thơi.


Chương trình kiểm tra gợi ý: cho trước 2 xâu rồi sinh ra kết quả


Var a:array[0..100,0..100] of byte;
s1,s2,s3,s4:string;


i,j:byte;
Begin


s1:='121212qqw12121212';
s2:='121wer21212121212';
s3:='';


For i:=0 to length(s1) do
a[0,i]:=0;


For i:=1 to length(s2) do
a[i,0]:=0;


For i:=1 to length(s1) do
For j:=1 to length(s2) do
Begin


If s1[i]=s2[j] then a[i,j]:= a[i-1,j-1]+1 else
If a[i-1,j]>a[i,j-1] then a[i,j]:= a[i-1,j]


Else a[i,j]:= a[i,j-1];


End;


i:= length(s1);
j:= length(s2);
Repeat


Begin


If (s1[i] = s2[j]) and (a[i,j] = a[i-1,j-1]+ 1) then
Begin


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

dec(j); dec(i);
End else


If a[i,j] = a[i-1,j] then dec(i) else dec(j);
End;


Until (i*j=0);
s4:='';


For i:=1 to length(s3) do
Begin


s4:=s4+ copy(s1,1,pos(s3[i],s1)-1);
delete(s1,1,pos(s3[i],s1));


s4:=s4+ copy(s2,1,pos(s3[i],s2)-1);
delete(s2,1,pos(s3[i],s2));



s4:=s4+s3[i];
End;


s4:=s4+s1+s2;
Write(s4);
Readln;
end.


Chú ý khi chấm bài vì bài này cho ra những xâu kết quả khác nhau, nên ta
xét chiều dài xâu sinh ra và tính nhẫm 1 hoặc 2 trường hợp khác đáp án là được.


<b>Câu 3 (7 điểm) - Dãy đặc biệt</b>


Để giải được bài này thì học sinh cần phải nắm được kỹ thuật tạo ma
phương chẵn, ma phương lẻ, vào một số phép toán biến đổi số học.


Cách tạo test.


- Để tạo dãy không thỏa mãn thì có các cách sau:


o N khơng là số chính phương hoặc có sự trùng lặp giữa các
phần tử trong dãy.


o N là số chính phương. Tổng các phần tử trong dãy không
chia hết cho căn bậc 2 của n.


Còn một số trường hợp đặc biệt khác chúng ta không cần
quan tâm.



- Để tạo ra dãy là dãy đặc biệt thì:


o N là số chính phương


o Tạo dãy an là cấp số cộng tùy ý công sai =1.


o Hốn đổi các phần tử của an.


Cịn một vài trường hợp đặc biệt khác chúng ta cũng không
cần quan tâm


</div>

<!--links-->

×