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

Đề thi HSGTHCS Lâm Đồng

6 2,1K 79

Đ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 6
Dung lượng 42 KB

Nội dung

SỞ GIÁO DỤC & ĐÀO TẠO KÌ THI CHỌN HỌC SINH GIỎI CẤP TỈNHĐề thi có 02 trang: gồm 3 bài Thời gian: 150 phút Không kể thời gian giao đề Cấu trúc đề thi: stt Tên bài Tên file làm bài Tên fil

Trang 1

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

(Đề thi có 02 trang: gồm 3 bài) Thời gian: 150 phút (Không kể thời gian giao đề)

Cấu trúc đề thi:

stt Tên bài Tên file làm bài Tên file INPUT Tên file OUTPUT

1 PHÂN TỬ YÊN

2 TỔNG CÁC SỐ

3 CHỌN PHẦN

THƯỞNG

Bài 1: (6điểm) PHẦN TỬ YÊN NGỰA

Cho mảng hai chiều có kích thước MxN số nguyên Phần tử A[I,j] được gọi là phần tử yên ngựa nếu nó là phần tử nhỏ nhất trong hàng I đồng thời là phần tử lớn nhất trong cột j.

Em hãy lập chương trình tìm phân tử yên ngựa của mảng A.

Dữ liệu vào: Cho file PTYN.INP gồm

- Dòng đầu tiên gồm hai số M,N ( 0 ≤ M; N ≤ 100)

- M dòng tiếp theo, mỗi dòng gồm có N số nguyên của mảng A.

(các giá trị cách nhau ít nhất 1 khoảng cách).

Dữ liệu ra: Ghi file PTYN.OUT vị trí của các phân tử yên ngựa (nếu có) hoặc dòng thông báo “Không có phần tử yên ngựa”.

Ví dụ:

3 3

15 3 9

55 4 6

76 1 2

(2,2)

Hoặc

3 3

15 10 5

55 4 6

76 1 2

Khong co phantu yen ngua

Bài 2: (7 điểm) TỔNG CÁC SỐ FIBONACI

Dãy Fibonaci là dãy gồm các số: 1; 1; 2; 3; 5; 8; … được xác định bởi công thức sau:

F1=1; F2=1; Fi=Fi-1+Fi-2 với i>2

Em hãy biểu diễn một số tự nhiên tành tổng ít nhất các số Fibonaci khác nhau.

Dữ liệu vào: Cho file FIBO.INP chứa số N (N ≤ 2000000000)

Dữ liệu ra: ghi vào file FIBO.OUT biễu diễn số N thành tổng ít nhất các số Fibonaci khác nhau.

Trang 2

Ví dụ.

Hoặc

Bài 3 (7 điểm) CHỌN PHẦNTHƯỞNG

Trong kỳ thi học sinh giỏi môn tin học, em là người đạt giải đặc biệt Ban tổ chức cho pép

em chọn các phần thưởng cho mình Các phần thưởng xếp thành một dãy dược đánh dấu từ số 1 đấn số N (0 ≤ N ≤ 10000), phần thưởng thứ I có giáo trị là ai (1 ≤ ai ≤ 100) Em được phép chọn các phần thưởng cho mình theo nguyên tắc không chọn 3 phần thưởng liên tiếp nhau trong dãy.

Viết chương trình để máy tính hướng dẫn em chọn các phần thưởng sao cho tổng giá trị các phần thưởng nhận được là lớn nhất.

Dữ liệu vào: cho file PTHUONG.INP gồm các dòng:

- Dòng đầu tiên là số phần thưởng N

- N dòng tiếp theo là giá trị của các phần thương.

Dữ liệu ra: ghi vào file PTHUONG.OUT gồm các dòng:

- Dòng đầu tiên ghi tổng giá trị lớn nhất của phần thưởng đã chọn.

- Dòng tiếp theo ghi vị trí của các phần thưởng đã chọn theo thứ tự tăng dần.

Ví dụ:

PTHUONG.INP PTHUONG.OUT 5

6 9 1 3 5

23

1 2 4 5

Hoặc

PTHUONG.INP PTHUONG.OUT 7

6 9 1 3 5 10 4

32

1 2 4 6 7

Họ và tên thí sinh: Số báo danh Giám thị 1: Ký tên Giám thị 2: Ký tên

Trang 3

Bài giải.

Bài 1: (6điểm) PHẦN TỬ YÊN NGỰA

program yenngua;

uses crt;

type

mang=array[1 100,1 100] of integer;

var

a:mang;

n,i,j,d:integer;

f:text;

procedure nhap;

var

i,j:integer;

begin

assign(f,'PTYN.inp');

reset(f);

readln(f,n);

for i:=1 to n do

begin

for j:=1 to n do read(f,a[i,j]);

readln(f);

end;

end;

function maxc(h:integer):integer;

var

max, i:integer;

begin

max:=a[1,h];

for i:=1 to n do if max<a[i,h] then max:=a[i,h];

maxc:=max;

end;

function minh(h:integer):integer;

var

min, i:integer;

begin

min:=a[h,1];

for i:=1 to n do if min>a[h,i] then min:=a[h,i];

minh:=min;

end;

begin

clrscr;

nhap;

d:=0;

for i:=1 to n do

for j:=1 to n do

if ((a[i,j]=minh(i)) and (a[i,j]=maxc(j))) then d:=d+1;

assign(f,'PTYN.out');

rewrite(f);

for i:=1 to n do

for j:=1 to n do

if ((a[i,j]=minh(i)) and (a[i,j]=maxc(j))) then writeln(f,'(',i, ',',j,')');

if d=0 then write(f,'Khong co phan tu yen ngua');

close(f);

end

Bài 2: (7 điểm) TỔNG CÁC SỐ FIBONACI

Program TongFIBONACi;

uses crt;

var

i,j,n,m:longint;

f:text;

function fi(h:integer):longint;

var

i:integer;

Trang 4

begin

if (h=1) or (h=2) then fi:=1

else

begin

x:=1; y:=1;

for i:=1 to h do

begin

tg:=x;

x:=y;

y:=y+tg;

end;

fi:=y;

end;

end;

function vt(so:longint):integer; var

i:integer;

begin

i:=1;

while fi(i)< so do i:=i+1;

if fi(i)= so then vt:=i

else vt:=i-1;

end;

procedure doc;

begin

assign(f,'FIBO.INP');

reset(f);

read(f,n);

close(f);

end;

begin

doc;

assign(f,'FIBO.OUT');

rewrite(f);

write(f,n,'=');

write(f,fi(vt(n)));

n:=n-fi(vt(n));

while n<>0 do

begin

m:=fi(vt(n));

n:= n-fi(vt(n));

write(f,'+',m );

end;

close(f);

end

Bài 3 (7 điểm) CHỌN PHẦNTHƯỞNG

program phan_thuong;

uses crt;

type mang= array[0 10000 ] of byte; var a,d,m:mang;

dd:array[1 20,1 400] of byte; b:array [1 10000] of boolean; r,dem, t,n,max,i,j:integer;

f:text;

procedure doc;

var i:integer;

begin

assign(f,'pthuong.inp');

reset(f);

readln(f,n);

for i:=1 to n do readln(f,d[i]); close(f);

end;

Trang 5

function kt( c:mang):boolean;

var

i,j:longint;

q:boolean;

begin

i:=1; q:=true;

while (i<=r-2) and q do

begin

j:=1;

while c[i+j-1]+1=c[i+j] do j:=j+1;

if j>=3 then q:=false

else q:=true;

i:=i+1;

end;

kt:=q;

end;

Procedure print;

var i,tong: byte;

begin

if kt(a)=true then

begin

dem:=dem+1;

tong:=0;

for i:=1 to r do

begin

dd[dem,i]:= a[i];

tong:=tong+d[a[i]];

end;

m[dem]:=tong;

end;

end;

Procedure Find(k:byte);

var j: byte;

begin

if k>r then print

else

begin

for j:=1 to n do

if b[j] and (j>a[k-1]) then

begin

a[k]:=j;

b[j]:=false;

Find(k+1);

b[j]:=true;

end;

end;

end;

begin

clrscr;

doc;

dem:=0;

r:= n-(n div 3);

for t:=1 to n do b[t]:=true;

a[0]:=0;

Find(1);

max:=m[1];

for i:=1 to dem do if max< m[i] then max:=m[i]; assign(f,'PTHUONG.OUT');

rewrite(f);

writeln(f,max);

for i:=1 to dem do

if max=m[i] then

begin

j:=1;

while (dd[i,j] <>0) do

Trang 6

begin

write(f,dd[i,j]:2); j:=j+1;

end;

end;

close(f);

end

Ngày đăng: 27/04/2015, 18:00

TỪ KHÓA LIÊN QUAN

w