KỲ thi học sinh giỏi lớP 9 CẤp tỉNH



tải về 41.72 Kb.
Chuyển đổi dữ liệu02.09.2016
Kích41.72 Kb.
#31243
SỞ GIÁO DỤC ĐÀO TẠO KỲ THI HỌC SINH GIỎI LỚP 9 CẤP TỈNH

TỈNH BÀ RỊA - VŨNG TÀU NĂM HỌC 2008-2009

Ngày thi 04 tháng 03 năm 2009


ĐỀ CHÍNH THỨC


Môn thi: Tin Học

Thời gian:150 phút


Lập trình để giải các bài toán sau đây bằng ngôn ngữ Pascal
Bài 1: (5 điểm)

a. Nhập một dãy số nguyên có n phần tử (0< n  100)

b. Sắp xếp dãy vừa nhập theo thứ tự tăng dần, in ra màn hình dãy đã sắp thứ tự

c. Tìm trên dãy đã sắp xếp có phần tử x hay không, với x được nhập từ bàn phím.



Bài 2: (7 điểm)

Cho đa thức bậc n: A = anxn + an-1xn-1 +…+ a1x + a0

Trong đó an, an-1,…a1,a0 là các hệ số nguyên có giá trị tuyệt đối không quá 100.

Biết rằng phương trình A = 0 nếu có nghiệm nguyên thì nghiệm nguyên đó chỉ có thể là ước số của hệ số a0.



Yêu cầu: Hãy tìm tất cả các nghiệm nguyên (nếu có) của phương trình A = 0.

Dữ liệu vào từ file ‘INTROOT.INP’:

  • Dòng đầu là số nguyên n (2≤n≤100)

  • Dòng thứ 2 ghi n+1 số nguyên tương ứng là các hệ số an, an-1,…a1,a0 của đa thức (các số cách nhau ít nhất một khoảng trắng).

Kết quả ghi vào file ‘INTROOT.OUT’ mỗi dòng ghi 1 nghiệm tìm được (nếu không có kết quả thì ghi ‘khong co’).

Ví dụ:

INTROOT.INP

INTROOT.OUT

4

1 -1 0 -2 -4



-1

2



(Giải thích: trong ví dụ trên thì phương trình x4-x3-2x-4=0 có 2 nghiệm nguyên là -1 và 2)

Hướng dẫn thêm: để tính biều thức A một cách hiệu quả nhất, người ta phân tích A thành dạng như sau:

A = (…((anx + an-1)x + an-2)x + …)x +a1)x + a0


Bài 3: (8 điểm)

Kỳ thi học sinh giỏi năm học 2008-2009 của tỉnh Bà Rịa-Vũng Tàu có 8 đội tuyển dự thi đến từ các huyện (TX, TP), số thứ tự các huyện được đánh số lần lượt từ 1 đến 8 là Vũng Tàu, Bà Rịa, Tân Thành, Châu Đức, Xuyên Mộc, Đất Đỏ, Long Điền, Côn Đảo. Mỗi thí sinh dự thi có một số báo danh duy nhất (là một số nguyên dương), mỗi đội tuyển của huyện tối đa 90 thí sinh. Sau khi thi xong Sở Giáo dục- Đào tạo tổ chức cho các thí sinh giao lưu với nhau, Ban tổ chức sắp xếp các thí sinh đứng thành một vòng tròn, để tạo điều kiện cho các thí sinh trong tỉnh được giao lưu với nhau Ban tổ chức yêu cầu các thí sinh cùng huyện không đứng gần nhau, các thí sinh thuộc 2 huyện có số thứ tự liền kề cũng không được đứng gần nhau.



Yêu cầu: Hãy giúp Ban tổ chức chỉ ra một cách xếp thỏa mãn yêu cầu trên

Dữ liệu vào: file ‘pupil.inp’

Gồm có 8 dòng, dòng thứ i chứa các số báo danh của các thí sinh huyện thứ i, các số báo danh cách nhau ít nhất một dấu cách.



Dữ liệu ra: file ‘pupil.out’

(Mô tả cách xếp n thí sinh theo yêu cầu trên một vòng tròn, ta có thể mô tả trên một đường thẳng, trong đó thí sinh đầu và thí sinh cuối đứng gần nhau trên vòng tròn)

Gồm n dòng (n là tổng số thí sinh), mỗi dòng là số báo danh của thí sinh. Trong trường hợp không có cách nào thỏa mãn yêu cầu thì ghi là -1

Ví dụ


Pupil.inp




Pupil.out

1 2 3

4 5 6


7 8 9

10 11 12


13 14 15

16 17 18


19 20 21

22 23





1

22

16



7

17

23



2

18

8



3

9

10



4

11

5



12

6

13



19

14

20



15

21

_____________________Hết________________________
Họ và tên thí sinh:………………………………… Chữ ký gián thị 1
Số báo danh:………………………………………. ………………………..

SỞ GIÁO DỤC ĐÀO TẠO KỲ THI HỌC SINH GIỎI LỚP 9 CẤP TỈNH

TỈNH BÀ RỊA - VŨNG TÀU NĂM HỌC 2008-2009
HƯỚNG DẪN CHẤM ĐỀ CHÍNH THỨC

MÔN TIN HỌC



Lưu ý chung: Học sinh có thể viết theo cách khác, chương trình chạy cho kết quả đúng, cho điểm tối đa, ngược lại chấm theo hướng dẫn sau đây. Tùy theo mức độ sai, trừ điểm hợp lý, tổng số điểm không quá 50% điểm tối đa.
Bài 1: (5 điểm)

- Nhập một dãy số nguyên: viết đúng cho 1 đ

- Sắp xếp dãy vừa nhập theo thứ tự tăng dần: viết đúng cho 1 đ

- Tìm phần tử x trên dãy: nếu học sinh sử dụng kỹ thuật tìm kiếm nhị phân thì cho 3 điểm, nếu tìm kiếm tuần tự thì cho 1 điểm



Bài 2: (7 điểm)

Thuật toán cho bài này: Cho i nhận giá trị lần lượt là các ước số của a[0] (kể cả ước âm).

Nếu tinh A = 0 thì i là một nghiệm nguyên.

- Chương trình con khởi tạo và đọc dữ liệu từ file: thủ tục Ini, cho 1 điểm

- Chương trình con tính giá trị đa thức, hàm Polynormial(x), viết đúng và hợp lý cho 3 điểm, viết đúng nhưng chưa hợp lý cho 2 điểm.

- Chương trình tìm nghiệm, thủ tục Inroot, viết đúng cho 1 điểm

- Khai báo và xử lý chung cho 1 điểm

Bài 3: (8 điểm)

- Chương trình con khởi tạo và đọc dữ liệu, thủ tục Ini, viết đúng cho 2 điểm

- Chương trình con kiểm tra phần tử cuối và ghi kết quả lên file, thủ tục Test, viết đúng cho 1 điểm

- Chương trình con xây dựng cấu hình theo yêu cầu bài toán, thủ tục Try, viết đúng cho 4 điểm

- Khai báo và xử lý chung cho 1 điểm
Sau đây là các chương trình hoàn chỉnh để tham khảo thêm

****************************************************

Program bai1;

var a:array[1..100] of integer; i,j,n,t,x,p,q:integer;found:boolean;

Begin

{********a. Nhap**************}



Write('Nhap so phan tu cua day:');Readln(n);

For i:=1 to n do readln(a[i]);

{*********b. Sap xep, in day ra man hinh *************}

For i:=1 to n-1 do

For j:=1 to n-i do

if a[j]>a[j+1] then

begin

t:=a[j];


a[j]:=a[j+1];

a[j+1]:=t;

end;

For i:=1 to n do write(a[i],' ');



{***********c. Tim kiem *********************}

Write('Nhap gia tri can tim:');

Readln(x);

p:=1;q:=n;

found:=false;

Repeat


i:=(p+q) div 2;

if a[i]= x then found:=true

else if a[i]

else q:=i;

Until (found)or(q-p=1);

if found then Writeln('Tim thay',x,' tai vi tri ',i)

else writeln('Khong tim thay');

readln;


End.

***************************************************

Program bai2;

Var i,n:shortint;f:text; a:array[0..100]of shortint;

Procedure Ini;

Begin


assign(f,'introot.inp');

reset(f);

readln(f,n);

For i:=n downto 0 do read(f,a[i]);

close(f);

assign(f,'introot.out');

rewrite(f);

end;


Function polynormial(x:integer):real;

Var i:shortint;y:real;

Begin

y:=a[n];


For i:=n-1 downto 0 do y:=y*x+a[i];

polynormial:=y;

End;

Procedure introot;



Begin

For i:=abs(a[0]) downto -abs(a[0]) do

if (i<>0) and(a[0] mod i = 0) then

if polynormial(i)=0 then writeln(f,i);

close(f);

end;


Begin

ini;


introot;

End.


*************************************************************

Program Bai3;

var f:text; n:integer;

candidate,x:array[0..630] of byte; free:array[1..630]of boolean;

procedure ini;

var sbd,i:integer;

begin

fillchar(candidate,630,0);



candidate[0]:=10;

fillchar(free,630,true);

assign(f,'pupil.inp');

reset(f);

n:=0;

For i:=1 to 8 do



begin

While not(eoln(f)) do

begin

read(f,sbd);



candidate[sbd]:=i;

inc(n);


end;

readln(f);

end;

end;


Procedure test;

var i:integer;

begin

if (abs(candidate[n]-candidate[1])>1) then



begin

assign(f,'pupil.out');

rewrite(f);

for i:= 1 to n do writeln(f,x[i]);

close(f);

halt;


end;

end;


Procedure try(i:integer);

var j:integer;

begin

for j:=1 to n do



if (free[j]) and (abs(candidate[j]-candidate[x[i-1]])>1) then

begin


x[i]:=j;

free[j]:=false;

if i=n then test

else try(i+1);

free[j]:=true;

end;


end;

Begin


ini;

try(1);


end.

tải về 41.72 Kb.

Chia sẻ với bạn bè của bạn:




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương