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

De thi HSG Tin hoc 9 Tinh Ba Ria - Vung Tau nam hoc 2009-2010 (Kem loi giai)

3 2K 44

Đ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 3
Dung lượng 56,5 KB

Nội dung

Trang 1

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

Ngày thi 23 tháng 02 năm 2010

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: (6 điểm) Xác định phần tử thứ n

Dãy số a0, a1, …, an xác định bằng quy nạp như sau :

a0 = 1

ai = i.ai-1nếu i chẵn

ai = i+ai-1 nếu i lẻ

Yêu cầu : Xác định giá trị an

Dữ liệu vào : file ‘Position.inp’ chứa duy nhất số nguyên n (1<n<18)

Dữ liệu ra : file ‘Position.out’ chứa giá trị của an tìm được

Ví dụ :

Position.inp Position.out

Bài 2: (8 điểm) Dãy con có tổng là S

Cho một dãy số nguyên có n phần tử a1, a2,…,an và số nguyên S

Yêu cầu: Hãy tìm một dãy con của dãy trên có tổng bằng S.

Dữ liệu vào từ file ‘Subarray.inp’:

 Dòng đầu là số nguyên dương n và số S (n≤20; S≤2*109)

 Dòng thứ hai là các phần tử của dãy (mỗi phần tử có phạm vi từ -108 đến 108)

Kết quả ghi vào file ‘Subarray.out’ dãy con tìm được Nếu không có dãy con thỏa mãn thì ghi ‘$’.

Ví dụ:

Subarray.inp Subarray.out

4 9

Bài 3: (6 điểm) Chụp hình lưu niệm

Kỳ thi học sinh giỏi năm học 2009-2010 của tỉnh Bà Rịa-Vũng Tàu có n thí sinh dự thi đến từ các huyện (TX, TP) trong Tỉnh, các thí sinh dự thi được đánh số lần lượt từ 1 đến n Mỗi thí sinh chỉ tham gia dự thi 1 môn, có tất cả 9 môn thi được đánh số từ 1 đến 9 Sau khi thi xong Sở Giáo dục- Đào tạo tổ chức cho các thí sinh chụp hình lưu niệm, Ban tổ chức sắp xếp các thí sinh đứng thành một hàng ngang, để tạo điều kiện cho các thí sinh được giao lưu với nhau Ban tổ chức yêu cầu các thí sinh cùng môn dự thi không đứ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’

- Có tất cả 9 dòng, dòng thứ i chứa các số thứ tự của các thí sinh dự thi môn thứ i, các số thứ tự cách nhau ít nhất một dấu cách

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

Một dòng chứa các số nguyên mô tả cách xếp các thí sinh theo hàng ngang thỏa mãn yêu cầu

Ví dụ :

Pupil.inp Pupil.out

1 2

3 4

5 6

7 8

9 10

11 12

13 14

15 16

17 18

1 3 2 4 5 7 6 8 9 11 10 12 13 15 14 17 16 18

ĐỀ CHÍNH THỨC

Trang 2

Program Bai1;

Var f:Text; n,i: Byte;

a:Array[0 17] of Longint;

Begin

Assign(f,'Position.inp');

Reset(f);

Readln(f,n);

Close(f);

If (1<n) and (n<18) then

Begin

a[0]:=1;

For i:=1 to n do

If i mod 2 = 0 then

a[i]:=i*a[i-1]

Else

a[i]:=i+a[i-1];

Assign(f,'Position.out');

Rewrite(f);

Write(f,a[n]);

Close(f);

End;

end

Bài 2 :

Program Bai2;

Var i, n, dau, cuoi : Byte;

S, T : Longint;

f : Text;

a : Array [1 20] of Longint;

Begin

Assign(f,'Subarray.inp');

Reset(f);

Readln(f,n,S);

If (n>0) and (n<=20) and (S<=2000000000) then Begin

For i:=1 to n do Read(f,a[i]);

Close(f);

T:=0; Dau:=1; cuoi:=0;

While (T<>S) and (cuoi<n) do

Begin

Inc(cuoi);

T:=T+a[cuoi];

If T > S then

Begin

T:=T-a[dau];

Inc(dau);

End;

End;

Assign(f,'Subarray.out');

Rewrite(f);

If T=S then

For i:=dau to cuoi do Write(f,a[i],' ')

Else

Write(f,'$');

Close(f);

End;

Trang 3

Program Bai3;

Uses Crt;

Var f:Text; n:Integer;

a,b:array [0 1000] of byte; c:array[1 1000] of boolean; Procedure Ini;

Var sbd,i:integer;

Begin

Fillchar(a,1000,0);

Fillchar(c,1000,true);

Assign(f,'Pupil.inp');

Reset(f);

n:=0;

For i:=1 to 9 do

Begin

While not(eoln(f)) do

Begin

Read(f,sbd);

a[sbd]:=i;

Inc(n);

End;

Readln(f);

End;

Close(f);

End;

Procedure Test;

Var i:integer;

Begin

Assign(f,'Pupil.out');

Rewrite(f);

for i:= 1 to n do Write(f,b[i],' ');

Close(f);

Halt;

End;

Procedure Try(i:integer);

Var j:Integer;

Begin

For j:=1 to n do

If c[j] and (abs(a[j]-a[b[i-1]])>0) then

Begin

b[i]:=j;

c[j]:=False;

If i=n then

Test

else

Try(i+1);

c[j]:=true;

End;

End;

Begin

Ini;

Try(1);

End

Ngày đăng: 29/06/2014, 15:00

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w