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

Đề thi học sinh giỏi cấp huyện và đáp án môn tin học diên khánh 2011

12 1K 0
Tài liệu được quét OCR, nội dung có thể không chính xác

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 3,79 MB

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

Nội dung

Với Z, N 0< N nhập từ bàn phím còn các phần tử của dãy số được sinh ngẫu nhiên.. 'Viết chương trình thực hiện: với mỗi cặp giá trị B va K hay tìm một số Kapreka.. Dữ liệu ra: Ghi vào tập

Trang 1

gBân chính

_ SỞ GD&ĐT KHANH HOA, KỲ THỊ CHỌN HỌC SINH GIỎI THCS

PHONG GD&DT DIÊN KHÁNH NĂM HỌC 2010-2011

Môn thi : TIN HQC - Lop 9

DE CHÍNH THỨC (hời gian : 150 phút — không kể thời gian phát dé)

Bai 1: (4 điểm)

Cho trước dãy số nguyên: ai, a, a3, ., av gdm N phan tir va mot sé nguyén bat ky Z 'Viết chương trình để chỉ ra một phần tử a; (1 < ¡< N) của dãy trén sao’ cho|a;-z|nhd

nhất Với Z, N (0< N) nhập từ bàn phím còn các phần tử của dãy số được sinh ngẫu nhiên Vidu: Choday: 5 -3 7 12 29

'Với Z = 8 thì chương trình kết xuất : 9 là phan tu gan Z nhat

'Với Z = -8 thì chương trình kết xuất : -3 là phan tu gan Z nhat

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

Số Kapreka mang tên nhà toán học Ấn Độ và được mô tả như sau: đó là số tự nhiên x viết trong hệ đếm Z có đúng K chữ số khác nhau đôi một và x = x""— x’, trong dé x’? vax’

lần lượt là các số thu được bằng cách sắp lại các chữ số của số x theo trật tự giảm và tăng

dần

'Viết chương trình thực hiện: với mỗi cặp giá trị B va K hay tìm một số Kapreka

Dữ liệu vào: trong tập tin văn bản KAPREKA.INP gồm 2 số Ö và K cách nhau bởi dấu cách (2 < 8 < 10, < B)

Dữ liệu ra: Ghi vào tập tỉn văn bản KAPREKA.OUT số Kapreka x tìm thấy trong

hệ đếm B Nếu không tìm thấy ghi sé 0

_ f dụ: Bộ dữ liệu dưới cho biết: Trong hệ đếm thập phân (# = 10, K = 4), x = 6174

là số Kapreka có 4 chữ số (khác nhau đôi mot), x''—x"= 7641 ~ 1467 = 6114 =x

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

Cho trước dãy số N số nguyên không giảm Ai, Az, Aa và 2 chỉ số ¿ và / Hãy tìm lặp lại nhiều nhất của các số trong day s6 Ay, Az,» An đồng thời cho biết giá trị của

lặp của một số (số có) là số nguyên dương và lớn hơn 1

Dữ liệu vào: từ tập tin văn bản SOLAP.INP có cấu trúc:

- Dòng đầu tiên chứa số nguyên N (1< N < 100);

- Dong thir hai chita day s6 Aj, Az, An (-10000 < A; < 10000 véi ¿e {1, N});

- Dòng thứ ba chứa 2 số ¿ và / (¡< j va 1S i,j SN);

~ Các số trên cùng một dòng cách nhau ít nhất một dấu cách

Dữ liêu ra: ghỉ vào tập tin SOLAP.OUT theo qui định:

- Dòng đầu tiên chứa số lần lặp lại nhiều nhất của các số trong dãy Ai, A2,

giá trị của số đó;

số là

An va

Trang 2

„ - Dòng thứ hai chứa số lần lặp lại nhiều nhất của các

của số đó;

- Các số trên cùng một dòng cách nhau ít nhất một dấu cách

+ Nếu không có số nào được lặp, ghỉ -1 trong tập tin SOLAP.OUT

6 trong day A; ., Aj va gid trị

Vi du:

Bài 4: (6 điểm)

Cho một xâu nhị phân S có chiều dài N (1<_N < 200) gồm các ký tự 0 và 1 Lần lượt xoay vòng xâu, mỗi lẫn một ký tự theo chiều kim đồng hồ ta thu được

phân độ dài N kế cả xâu ban đầu Sắp xếp tăng dần các xâu đó theo thứ tự từ điển và xếp theo thứ tự đã sắp, mỗi xâu một hàng thành một bảng vuông N hàng N cột

Ví dụ:

Với xâu S = 10100, sau khi xoay và sắp ta thu được bảng sau:

00101

01001

01010

10010

10100

'Yêu cầu: Cho biết cột cuối cùng của bảng, hãy xác định dòng đầu tiên của bảng

Dữ liệu vào: Đọc từ một tệp văn bản NHIPHAN.INP gồm một dòng là 1 xâu nhị

phân là cột cuối cùng của bảng

Dữ liệu ra: Ghi vào tệp văn bản NHIPHAN.OUT một dòng là xâu nhị phân biểu thị dòng đầu của bảng

'Với ví dụ trên, đầu vào và đầu ra có thể như sau:

NHIPHAN.INE NHIPHAN.OUT_ _]

—————— HÉT Ghi chit :

- Các tập tin bài làm phải

BL4.PAS;

~ Đề thi có 02 trang;

- Giám thị không giải thích gì thêm

theo qui định BLI.PAS, BL2.PAS, BL3.PAS,

Trang 3

SỞ GD&ĐT KHÁNH HÒA ĐÁP ÁN ĐÈ THỊ CHỌN HỌC SINH GIỎI THC PHÒNG GD&ĐT DIÊN KHÁNH NĂM HỌC 2010-2011

Môn thi: TIN HQC ~ Lớp 9 Thời gian: 130 phút (không kẻ thời gian phát đề)

DAP AN VA BIRU DIEM

h bày một cách giải, trong đáp án có bai gid duoe viét dudi dang các

ch khác (nếu đúng) và không viết chương trình dưới dạng các thủ tục vẫn e†

tục Học sinh giải

điểm tối đa

"Những bài làm của thí sinh có viết dưới dạng tha tục (ding) sẽ cho điểm thưởng 0.25 điể

cho mỗi bài Sau là đáp án và biểu cho điểm của c‹

A- BIỂU ĐIÊM

BÀI 1: (4 điểm)

Cấu trúc dùng chung : (.50 đ)

Chương trình viết dưới dạng chương trình con :— 025đ

Nhập số và kiểm tra : (1.008)

+ Nhập được số N : 028đ

Giải thuật tìm số đúng yêu cầu bài toán : (2.00đ)

Phần kết xuất : (0.504)

BÀI 2: (4 điểm)

Cấu trúc dùng chung : (0.50 đ)

+ Chương trình viết dưới dạng chương trình con : 028đ

Giải thuật tìm số đúng yêu cầu bài toán : (2.004)

+ Đọc dữ liệu đúng 0.50đ + Ghi dor ligu đúng, 0.50đ

Phần kết xuất : (0.50đ)

BÀI 3: (6 điểm)

Cấu trúc dùng chung : (1.00 đ)

+ Biển đầy đủ, hợp lý 0.50đ + Chương t đưới dạng chương trình con ; 080đ

Giải thuật tìm số đúng yêu cầu bài toán : (4.004)

Trang 4

+ Dọc dữ liệu đúng, + Ghi dữ liệu đúng

+ Giải thuật tốt + Tính được các dãy số nhị phân + Phân tích và tìm được dãy nhị phân đầu tiên

+ Kết xuất ra file đúng + Kết xuất đẹp

BÀI 4: (6 điểm)

Cấu trúc dùng chung : (1.00 đ)

+ Biến đầy đủ, hợp lý + Chương trình viết dưới dạng chương trình con

Giải thuật tìm số đúng yêu cầu bài toán : (4.00đ)

+ Đọc dữ liệu đúng, + Ghi dữ liệu đúng, + Giải thuật tốt

+ Tính được các dãy số nhị phân

+ Phan tich và tìm được đãy nhị phân đầu tiên

Phần kết xuất : (1.00đ)

+ Kết xuất ra file đúng,

+ Kết xuất đẹp

B- CHƯƠNG TRÌNH MẪU

Program Bai_1;

Type Mang] = Array [1 nMax] of Integer;

n,i,vt: Bytes

z, dz Integer;

Begin

CLrSer;

Repeat Writein;

Readln (n)

If n<=0 then

Begin

Weitein(? n phai la so nguyen duong !");

Weiteln(’ Nhan phim bat ky de nhap lai !");

Readkey;

ClrScr;

End;

until n>0;

Writelnz

Randomize;

For i:=1 to n do a(1]:=Random(Max)=Random(Max) 7

For i:=1 to n do Write(a(1]:7);

writeln;

Write (‘Hay nhap vao so bat ky:

Readin(2) 7

d:=Abs (2-a(11)7

veil;

0.500

0.500 100đ 1,000

1.004

0.500 0.500

0.500 0.500

0.500 0.500 1.004 1.004 1.004 0.500

0.500

Trang 5

For i:=2 to n do

1£ d>Abs(a(i]~z) then

Begin

bs (z-ali]) +

End

Writeln('Phan tu cua day gan voi Z = ',2:4,' nhat lat

*,a[vE]:4);

Writeln;

Write(*Nhan phim bat ky de ket thuc !

Readkey ;

End

Program Bai_2;

Uses Crt

Const mn = 11; fn = ‘KAPREKA.INP'; gn = 'KAPREKA.OUT';

Type mbl = array[0 mn] of byte:

var x, y, a: mb

b, ky bl, v

integer;

b - he dem

k - so chu so

bl - chu so lon nhat trong he b, bl = b-1

v - bien kiem soat cho ham Next

f,g: text;

Procedure Doc;

Begin assign(f,fn); xeset(£); readln(f,b,k); close(f);

bl := bel; ( Chu so cao nhat trong he dem b }

End:

Function Next: Boolean;

var i: integer;

Begin

Next := false;

if (v = 0) then exit;

x[v) t= xtv) +1:

for i r= v +1 to k do x[i] re x[i-1] + 1

if (x[k] = bl) then v := v - 1 else v

Next i= true;

End,

Function Hieu: Boolean;

var i,c,t: integer;

Begin

fillchar(d, sizeof (d),0);

Hieu := false;

{ Ghi nhan cac xuat hien cua xi] }

for i := 1 to k do d(x[i]] = 17

c= 1; { ¢: so nho }

for i i= 1 to k do

al'yvt,']

Trang 6

Begin

ti= x[i] + (bl - x[k-i*l]) + €;

if (t > bl) then

begin t r= t -

1; end

if (d(t] = 0) then exit; { t ko xuat hien trong x } yli] := ty d{t) := 0;

End;

Hieu i= true;

End;

Function Kapreka: Boolean;

var i: integer;

t: Booleans

Begin

Kapreka := true;

( Khoi tri x la to hop tang nho nhat }

(Kx[1 k] = (0,1, ,ke1) }

for i := 1 to k do x{i] := i-l;

if (x{k] = bl) then v : k

repeat

if (Hieu) then exit;

until not next;

Kapreka := false;

End;

Procedure Run;

var i: byte;

Begin

Docs

assign(g,gn); rewrite(g);

if (Kapreka) then

for i := k downto 1 do write(g,y(il)

else write(g,0);

writeln(g); close(g);

End;

BEGIN

Run;

END

Program Bai_3;

Const

fi='Solap.inp';

fo='Solap.out';

var

£:texi

n, id, jd,max1,max2: integer;

a:array [1 100] of bytes

{ Program Solap;

const

f

f

var

Solap.inp';

Solap.out';

£:tex

nụ id, jd,max1, max2: integerz

Trang 7

a:array [1 100] of byte;

re

procedure readfile;

var izinteger;

begin

assign (£, £4);

reset (£);

readin(f,n);

procedure XuLy;

var i,j,x,y,k:integer;

begin

fillchar (a, sizeof (a), 0);

diel;

max1

max2

xead (£,X) ¡

150;

if n=1 then

begin k:=1; a(1]:=1; end

else

while i<n do

begin

bnH dine (4) xead (£, y) while (y=x) and (isn) do begin inc(j); read(f,y); ine (i)

end;

if isn then

if y=x then inc(j) else begin a[k+2]:

xieyi ine (k)z a[k]:=4;

if a[k+1]=1 then inc(k);

end;

end;

read(f, id);

read(f, jd);

for i:=1 to k do

if a(i]>maxl then maxl for i:=1 to k do

if id<>0 then

if afi)<id then begin id:=id-a[i]; a[1]:=0;

else begin a[i]:=a(i]-id+l;

d+1;

downto 1 do

if jd<>0 then 1ƒ a(i]<jd then

(ile

for i

else begin a[i]:=a[i]-j3d+l; jd:=0; end;

to n do 4£ a[i]>max2 then max2:

for i

(ile

Trang 8

close(f);

end,

os

procedure WriteFile;

begin

assign (£, £0);

rewrite (f);

writeln(f,max1);

writeln(£,max2) 7

close (£);

readfile;

xuly;

WriteFile;

end.)

procedure readfile;

var i:integer;

begin

assign(£, fi) +

reset (f);

readin(f,n);

procedure XuLy;

var 4,),x,y,k:integer;

begin

fillchar(a, sizeof (a) ,0);

irel;

max1:=0;

max2:=0;

read(f,x);

ki=0;

4£ n=1 then

begin k:=1; af1]:=1; end

else

while icn do begin

jielr Ane (i) + xead (#, y) while (yx) and (i<a) do begin inc(3); read(f,y); inc (i) end;

4£ i=n then 1f y=x then inc(j) else begin a(k+2]:=1; end;

xi=V/

ảne (k);

a[k]:=4;

if a(k+1]=1 then inc(K);

end;

read(f,id);

xead (£, 3đ)

for i:=1 to k do

4£ a[i]>maxl then max1:=a[i];

Trang 9

for ir=1 to k do

if id<>0 then

if a(i}<id then begin id:=id-a[i]; a[4]:=0;

else begin a{i):=a[i]-idtl: end;

if jd<>0 then 4£ a[4]<jd then

else begin a[i]:=a(1)~-jđ+1; 3d for i:=1 to n do

4ƒ a[i]>max2 then max2:=a[i];

close (£);

end;

iS

procedure WriEeFile; begin

assign(£, £0);

rewrite (f);

writeln(£,max1);

writeln(£,max2);

close(£) ;

readfile;

xuly;

WriteFile;

end

Program Bai_4

fo='nhiphan out!

Var s,w:string;CS:array(0 255] of integer;

d,n, i:integer;

f,g:text

iS

Function Truoc(i:integer):

Begin

if isn then Truoc:

else Truo:

integer;

Function Sosanh(i,j:integer) : Integer;

Var k:integer;

Begin

For k:=1 to n do

Begin if s[i]<>s(j] then

Begin if s[il<s[j] then Sosanh:

else Sosanh: exit:

End;

Trang 10

Ar=Truoc (i);

End;

Sosanh

End;

Procedure Saplaicot;

var x,i,j,krinteger;

Begin

For i: to n do CS[i]:

For i:=2 Begin to n do

xi=CS[1];k ;

For j:=i-1 downto 1 do

Begin

4£ (w(CS[3]]<=w[x]) Then

Begin ki +1; break end;

c8[5+1] :=CS [5]

End;

CS[k}

End;

End;

a

Procedure BackTracking;

Var itinteger;

Begin

nislength(w) 7

Saplaicot;

For i:=1 to n do

Af (CS(i]<>i) Then Begin d:=i;break end;

For i:=1 to n do

Begin d:=CS[d];

=s+w[d];Bnd;

var i,J,tg,min:integer;

xau:String;

Begin

For i:=2 to n do

4£ Sosanh(C§(1],CS (min) }

while i<=n do

Begin

xâu:=xau+s [min]

Procedure Work;

Var f,g:Text;

Begin

Trang 11

Assign(£,£1);Reset(f);

Assign (g, fo) ¿ Rewrite (g) ;

Readìn (£,w);

BackTrackin

Tims

writeln(g,s);

Close(f);

Close(g);

End; fae

BEGIN

Work;

END

Ngày đăng: 04/04/2014, 20:47

TỪ KHÓA LIÊN QUAN

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

w