Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 5

SỞ GIÁO DỤC & ĐÀO TẠO KÌ THI CHỌN HỌC SINH GIỎI CẤP TỈNH

LÂM ĐỒNG NĂM HỌC 2010 - 2011

ĐỀ THI CHÍNH THỨC Môn : TIN HỌC - THPT


(Đề thi có 03 trang, gồm 3 bài) Thời gian : 180 phút (không kể thời gian giao đề)
Ngày thi : 18/2/2011

TỔNG QUAN BÀI THI


Tên bài File chương trình File dữ liệu vào File kết quả
Bài 1 Tam giác TAMGIAC.* TAMGIAC.INP TAMGIAC.OUT
Dấu * được thay thế bởi PAS, PP hoặc CPP của ngôn ngữ lập trình được sử dụng
tương ứng là Pascal hoặc C++
Hãy lập trình để giải các bài toán sau:

Bài 1: Tam giác (6 điểm)


Trong mặt phẳng toạ độ Oxy cho N điểm, mỗi điểm N i được xác định bởi cặp toạ độ
nguyên xi, yi. (1  i  100)
Hãy tính diện tích của tất cả các tam giác được tạo thành từ 3 điểm phân biệt không
thẳng hàng và chứa điểm N1(x1, y1). Ghi diện tích các tam giác tìm được vào tệp
TAMGIAC.OUT theo thứ tự tăng dần.
Biết công thức tính diện tích tam giác: và với a,
b, c là độ dài của 3 cạnh của tam giác.
Dữ liệu vào: được cho trong tệp TAMGIAC.INP gồm có các dòng:
- Dòng đầu tiên có 1 số nguyên dương N (1  N  100) .
- Các dòng tiếp theo ghi các cặp số nguyên (các số cách nhau ít nhất một kí tự trắng) là tọa
độ của đỉểm Ni tương ứng.
Dữ liệu ra: được ghi vào tệp TAMGIAC.OUT gồm:
- Mỗi dòng ghi diện tích của một tam giác theo thứ tự tăng dần (lấy 2 chữ số thập phân).
Nếu không tồn tại tam giác thì ghi là NULL.
Ví dụ:
TAMGIAC.INP TAMGIAC.OUT
5 12.00
27 13.50
64 13.50
5 -2 22.50
-1 -2 22.50
-2 4 27.00

1
SỞ GIÁO DỤC & ĐÀO TẠO KÌ THI CHỌN HỌC SINH GIỎI CẤP
TỈNH
LÂM ĐỒNG NĂM HỌC 2010 - 2011

HƯỚNG DẪN CHẤM ĐỀ CHÍNH THỨC

Môn : TIN HỌC - THPT

Ngày thi : 18/2/2011

TỔNG QUAN BÀI THI


Tên bài File chương trình File dữ liệu vào File kết quả
Bài 1 Tam giác TAMGIAC.* TAMGIAC.INP TAMGIAC.OUT
Dấu * được thay thế bởi PAS, PP hoặc CPP của ngôn ngữ lập trình được sử dụng
tương ứng là Pascal hoặc C++

Bài 1: Tam giác (6 điểm)


Bài thi được tiến hành chấm theo các bộ “test” chương trình, mỗi bộ test 1 điểm.
Ý tưởng:
Bài toán kiểm tra kiến thức lập trình giải các bài toán hình học và vận dụng thuật toán
sắp xếp.
Các công thức hình học:
Tính độ dài đoạn thẳng:
Tính diện tích tam giác: với ; a, b, c là độ dài
của 3 cạnh của tam giác.
Các thuật toán sắp xếp:
Không bắt buộc thí sinh sử dụng thuật toán sắp xếp cụ thể nào, tuy nhiên chương
trình phải đáp ứng được về mặt thời gian thực hiện tối thiểu là 5 giây cho mỗi bộ test.

Các bộ test chấm điểm:


Test Dữ liệu vào Dữ liệu ra Điểm
Trong tệp TAMGIAC.INP Tệp TAMGIAC.OUT
Test 5 12.00 1
1 27 13.50 điểm
64 13.50
5 -2 22.50
-1 -2 22.50
-2 4 27.00
Test 2 NULL 1
2
2 31 điểm
-2 3
Test 4 2.00 1
3 00 2.00 điểm
02 2.00
22
20
Test 5 9.00 1
4 06 18.00 điểm
33 18.00
36.00
60
-6 0
-3 3
Test 20 9.00 1
5 11 18.00 điểm
22 27.00
36.00
33 45.00
44 54.00
55 63.00
66 72.00
77 81.00
90.00
88 99.00
99 108.00
10 10 117.00
11 11 126.00
12 12 135.00
144.00
13 13 153.00
14 14 162.00
15 15
16 16
17 17
18 18
19 19
19 1
Test 3 NULL 1
6 01 điểm
02
03

Chương trình tham khảo


3
type diem = record
x,y:integer;
end;
mang = array[1..50] of real;
var dtg,dd,n,k,i,j:integer;
d1,d2,d3,p:real;
d:array[1..50] of diem;
dt:mang;
f,g:text;
procedure sapxep(var a:mang;n:integer);
var x,y:integer;
tg:real;
begin
for x:=n downto 2 do
for y:=1 to x -1 do
if a[y] > a[y+1] then
begin
tg := a[y];
a[y] := a[y+1];
a[y+1]:=tg;
end;
end;
procedure nhap;
begin
assign(f,'t2.inp');
reset(f);
readln(f,n);
for i:= 1 to n do
readln(f,d[i].x,d[i].y);
close(f);
end;
procedure xuat;
var dm:array[1..50] of real;
begin
assign(g,'thu.oup');
rewrite(g);
if dtg<1 then writeln(g,'khong co tam giac nao')
else
begin
sapxep(dt,dtg);
for i:=1 to dtg do
if dt[i] > 0 then writeln(g,dt[i]:10:2);

end;
close(g);
end;
function dientich(a,b,c:diem):real;
begin
d1:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
d2:=sqrt(sqr(a.x-c.x)+sqr(a.y-c.y));
d3:=sqrt(sqr(b.x-c.x)+sqr(b.y-c.y));
if (d1+d2 >d3) and (d1+d3>d2) and (d2 + d3 > d1) then
begin
p:=(d1+d2+d3)/2;
dientich:=sqrt(p*(p-d1)*(p-d2)*(p-d3));
end
else dientich := 0;
end;
procedure bailam;
begin
dtg:=0;
if n < 3 then exit;
for i:= 2 to n-1 do
for j:= i+1 to n do
begin
dtg:=dtg+1;
4
dt[dtg]:=dientich(d[1],d[i],d[j]);
end;
end;
begin
nhap;
bailam;
xuat;
end.

You might also like