1. Trang chủ
  2. » Giáo án - Bài giảng

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)

5 220 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 5
Dung lượng 63,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Câu 2: 3,5 điểm Tính diện tích đa giác DAGIAC.PAS Trong mặt phẳng tọa độ, cho đa giác lồi có N đỉnh, các đỉnh được đánh số theo thứ tự từ 1 đến N, đỉnh thứ i có tọa độ tương ứng là xi, y

Trang 1

Së Gi¸o dôc-§µo t¹o kú thi CHäN häc sinh giái líp 12 Qu¶ng b×nh n¨m häc 2009 - 2010

§Ò chÝnh thøc Thời gian 180 phút, không kể thời gian giao đề

ĐỀ RA

Sử dụng ngôn ngữ lập trình Turbo Pascal để lập trình giải các bài toán sau:

Gọi abc là số có ba chữ số, hãy liệt kê tất cả các số abc sao cho tổng lập phương các chữ số của abc bằng chính nó

3 3 3

abc a   bc

Ví dụ: Ta có số: 153 = 13 + 53 + 33

Dữ liệu ra: Ghi ra file văn bản TIMSO.OUT, theo cấu trúc như sau:

- Trên mỗi dòng ghi một số abc tìm được.

Câu 2: (3,5 điểm) Tính diện tích đa giác DAGIAC.PAS

Trong mặt phẳng tọa độ, cho đa giác lồi có N đỉnh, các đỉnh được đánh số theo thứ tự từ 1 đến N, đỉnh thứ i có tọa độ tương ứng là (xi, yi).

Yêu cầu: Hãy tính diện tích của đa giác lồi trên.

Dữ liệu vào: Cho trong file văn bản DAGIAC.INP, có cấu trúc như sau:

- Dòng 1: Ghi số nguyên dương N, là số lượng đỉnh của đa giác lồi, (3 ≤ N ≤ 100).

giác lồi, hai số được ghi cách nhau ít nhất một dấu cách, (-32767 ≤ xi , yi ≤ 32767).

Dữ liệu ra: Ghi ra file văn bản DAGIAC.OUT, theo cấu trúc như sau:

- Dòng 1: Ghi số thực S, là diện tích của đa giác S được làm tròn đến 1 chữ số

phần thập phân.

Ví dụ:

3

0 0

0 1

1 0

0.5

Câu 3: (3,5 điểm) Lắp đặt hệ thống ống dẫn xăng LAPDAT.PAS

Một công ty kinh doanh xăng có N cửa hàng, các cửa hàng được đánh số theo thứ tự từ 1 đến N Nhằm thuận tiện trong việc vận chuyển xăng giữa các cửa hàng, lãnh đạo công ty lập kế hoạch lắp đặt các đường ống dẫn nối các cửa hàng với nhau Qua khảo sát, các chuyên gia cho biết độ dài đường ống giữa hai cửa hàng i và j là Aij Để giảm chi phí, công ty chỉ lắp đặt các đường ống sao cho giữa hai cửa hàng bất kỳ đều có thể chuyển xăng qua lại cho nhau (trực tiếp hoặc gián

Trang 2

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).

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ụ:

4

0 2 3 12

2 0 4 5

3 4 0 9

12 5 9 0

10

1 2

1 3

2 4

==HẾT==

Trang 3

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; S:Real;

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;

Trang 4

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;

Trang 5

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

Ngày đăng: 11/10/2015, 13:34

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w