Tải bản đầy đủ (.doc) (5 trang)

Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2009 2010 tỉnh quảng bình (vòng 1)

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 (137.42 KB, 5 trang )

Sở Giáo dục-Đào tạo
Quảng bình
SBD :
Đề chính thức

kỳ thi CHọN học sinh giỏi lớp 12
năm học 2009 - 2010
môn: tin học - vòng i

Thi gian 180 phỳt, khụng k thi gian giao

RA
S dng ngụn ng lp trỡnh Turbo Pascal lp trỡnh gii cỏc bi toỏn sau:
Cõu 1: (3,0 im) Tỡm s
TIMSO.PAS
Gi abc l s cú ba ch s, hóy lit kờ tt c cỏc s abc sao cho tng lp
phng cỏc ch s ca abc bng chớnh nú.
abc = a 3 + b3 + c3

Vớ d: Ta cú s: 153 = 13 + 53 + 33
D liu ra: Ghi ra file vn bn TIMSO.OUT, theo cu trỳc nh sau:
- Trờn mi dũng ghi mt s abc tỡm c.
Cõu 2: (3,5 im) Tớnh din tớch a giỏc
DAGIAC.PAS
Trong mt phng ta , cho a giỏc li cú N nh, cỏc nh c ỏnh s
theo th t t 1 n N, nh th i cú ta tng ng l (xi, yi).
Yờu cu: Hóy tớnh din tớch ca a giỏc li trờn.
D liu vo: Cho trong file vn bn DAGIAC.INP, cú cu trỳc nh sau:
- Dũng 1: Ghi s nguyờn dng N, l s lng nh ca a giỏc li, (3 N 100).
- N dũng tip theo: Mi dũng ghi hai s nguyờn xi yi l ta nh th i ca a
giỏc li, hai s c ghi cỏch nhau ớt nht mt du cỏch, (-32767 xi , yi 32767).


D liu ra: Ghi ra file vn bn DAGIAC.OUT, theo cu trỳc nh sau:
- Dũng 1: Ghi s thc S, l din tớch ca a giỏc. S c lm trũn n 1 ch s
phn thp phõn.
Vớ d:
DAGIAC.INP
DAGIAC.OUT
3
0.5
0 0
0 1
1 0
Cõu 3: (3,5 im) Lp t h thng ng dn xng
LAPDAT.PAS
Mt cụng ty kinh doanh xng cú N ca hng, cỏc ca hng c ỏnh s
theo th t t 1 n N. Nhm thun tin trong vic vn chuyn xng gia cỏc ca
hng, lónh o cụng ty lp k hoch lp t cỏc ng ng dn ni cỏc ca hng
vi nhau. Qua kho sỏt, cỏc chuyờn gia cho bit di ng ng gia hai ca
hng i v j l Aij. gim chi phớ, cụng ty ch lp t cỏc ng ng sao cho gia
hai ca hng bt k u cú th chuyn xng qua li cho nhau (trc tip hoc giỏn
1


tiếp qua các cửa hàng trung gian) mà tổng độ dài các ống dẫn cần dùng là ngắn
nhất.
Yêu cầu: Hãy tìm một phương án lắp đặt các đường ống thỏa mãn yêu cầu của
lãnh đạo công ty.
Dữ liệu vào: Cho trong file văn bản LAPDAT.INP, có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương N, là số lượng cửa hàng, (2 ≤ N ≤ 100).
- N dòng tiếp theo: Mỗi dòng ghi N số nguyên dương A ij là độ dài đường ống cần
dùng để nối giữa cửa hàng i và cửa hàng j. Trên mỗi dòng các số được ghi cách

nhau ít nhất một dấu cách, (Aij = 0, với i = j; 1 ≤ Aij ≤ 32767, với i ≠ j).
Dữ liệu ra: Ghi ra tệp văn bản LAPDAT.OUT, theo cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương L, là tổng độ dài đường ống cần dùng theo phương
án tìm được (0 < L < 2×109).
- Các dòng tiếp theo: Mỗi dòng ghi hai số nguyên dương i j thể hiện có đường
ống nối giữa cửa hàng i và cửa hàng j. Hai số ghi cách nhau ít nhất một dấu cách.
Ví dụ:
LAPDAT.INP
4
0
2
3
12

2
0
4
5

3
4
0
9

12
5
9
0

LAPDAT.OUT

10
1 2
1 3
2 4

==HẾT==

2


HƯỚNG DẪN CHẤM THI CHỌN HỌC SINH GIỎI LỚP 12
NĂM HỌC 2009 - 2010
MÔN TIN HỌC - VÒNG I
I- Phương pháp:
- Giám khảo tạo bộ dữ liệu vào, tính toá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 toán kết quả
của dữ liệu vào.
- Chương trình học sinh đúng một bộ test, giám khảo cho 0,5 điểm. Như vậy,
nếu một câu có 3 điểm thì giám khảo phải tạo 6 bộ test.
- Với mỗi câu, giám khảo phải tạo được một bộ test có không gian dữ liệu lớn.
- Đối với Câu 1, kết quả có 4 số thỏa mãn điều kiện đề bài, học sinh trả lời
đúng 1 số giám khảo cho 0,75 điểm.
- Đối với Câu 2 nếu học sinh không làm tròn đến 1 chữ số thập phân thì trừ 0,1
điểm trên mỗi test.
- Đối với Câu 3 có thể có nhiều phương án lắp đặt. Nếu học sinh đưa ra
phương án khác với đáp án nhưng vẫn đúng thì giám khảo cho điểm tối đa.
II- Chương trình gợi ý:
Câu 1: (3,0 điểm) Tìm số
Program Tim_so;

Const
fo='Timso.out';
Var a,b,c:Longint;
f:Text;
Begin
Assign(f,fo);
Rewrite(f);
For a:=1 to 9 do
For b:=0 to 9 do
For c:=0 to 9 do
If (a*a*a + b*b*b + c*c*c) = (100*a + 10*b + c) then
Writeln(f,100*a + 10*b + c);
Close(f);
End.

Câu 2: (3,5 điểm) Tính diện tích đa giác
Program Dien_tich_Da_giac;
Const
fi='Dagiac.in5';
fo='Dagiac.out';
Type
Diem = Record
x,y:Longint;
End;
mmc=Array[0..1001] of Diem;
Var
N:Longint;
A:mmc;
Procedure Read_Data;
Var i: Longint;

f:Text;
Begin
Assign(f,fi);
Reset(f);
Readln(f,N);
For i:=1 to N do
Readln(f,A[i].x,A[i].y);
Close(f);
End;
Procedure Tinh;
Var i: Longint;
Begin
S:=0;

S:Real;

3


A[N+1] := A[1];
For i:= 1 to N do
S:= S + (1/2)*(A[i+1].y + A[i].y)*(A[i+1].x-A[i].x);
End;
Procedure Write_Data;
Var f:Text;
Begin
Assign(f,fo);
ReWrite(f);
Write(f,abs(S):15:1);
Close(f);

End;
BEGIN
Read_Data; Tinh; Write_Data;
END.

Câu 3: (3,5 điểm) Lắp đặt hệ thống ống dẫn xăng
Program Lap_Dat;
Const fi='Lapdat.in0';
fo='Lapdat.ou0';
Type mhc=array[0..101,0..101] of Word;
Canh = Record
u:Byte;
v:Byte;
info:word;
End;
mmc=Array[1..10001] of Canh;
Var T,K:Longint; N:Byte; E:mmc; B:mhc;
Procedure Read_Data;
Var f:text;
i,j,l:Byte;
Begin
Assign(f,fi);
Reset(f);
Readln(f,N);
Fillchar(B,sizeof(B),0);
K:=0;
For i:=1 to N do
Begin
For j:=1 to i-1 do
Begin

inc(K);
Read(f,E[K].info);
E[K].u:=i;
E[K].v:=j;
End;
Readln(f);
End;
Close(f);
End;
Procedure Hoan_doi(Var x,y:Canh);
Var tg:Canh;
Begin
tg:=x;
x:=y;
y:=tg;
End;
Procedure Sap_Xep;
Var i,j:Longint;
Begin
For i:=1 to K-1 do
For j:=i+1 to K do
If E[i].info > E[j].info then
Hoan_doi(E[i],E[j]);
End;
Function Lien_Thong(u,v:Byte):Boolean;
var S:array[1..1000]of Word;

4



KT:array[1..100] of Boolean;
Top,i:Byte;
begin
Top:=0;
Fillchar(KT,sizeof(KT),false);
Lien_Thong:=True;
inc(Top);
S[Top]:=u;
KT[u]:=True;
While Top > 0 do
Begin
u:=S[Top];
dec(Top);
If u=v then
Begin
Lien_Thong:=False;
Exit;
End;
For i:=1 to N do
If (KT[i]=False) and (B[u,i] > 0) then
Begin
inc(Top);
S[Top]:=i;
KT[i]:=True;
End;
End;
End;
Procedure Kruskal;
Var i,j:Word;
Begin

i:=0;
j:=0;
T:=0;
While i < N-1 do
Begin
inc(j);
If Lien_Thong(E[j].u,E[j].v) then
Begin
B[E[j].u,E[j].v]:=E[j].info;
B[E[j].v,E[j].u]:=E[j].info;
T:=T+E[j].info;
inc(i);
end;
End;
End;
Procedure Write_Data;
Var f:text;
i,j:Byte;
Begin
Assign(f,fo);
Rewrite(f);
Writeln(f,t);
For i:=1 to N do
For j:=1 to N do
If B[i,j]>0 then
Begin
Writeln(f,i,' ',j);
B[j,i]:=0;
End;
Close(f);

End;
BEGIN
Read_Data; Sap_Xep; Kruskal; Write_Data;
END.

5



×