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

Nội dung

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

KAPREKA.INP KAPREKA.OUT 10 4 6174 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,

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: SOLAP.INP | SOLAP.OUT 10 41 -1-111113101010 | 310 510 i 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_ _]

11000 00101 |

—————— 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

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 đ)

+ Biến đầy đủ, hợp lý :— 025đ

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đ + Nhập được số Z :— (284

+ Kiểm tra điều kiện nhập N :— 080đ

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

+ Sinh số ngẫu nhiên :— 0,80đ

+ Giải thuật tốt 0.754

+ Tìm đúng số gần nhất 0.754

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

+ Kết xuất câu thông báo đúng yêu cầu : 0238

+ Kết xuất đẹp :— 028đ

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

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

+ Biến đầy đủ, hợp lý : 9258

+ 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đ

+ thuật tốt 0.50đ

+ Tìm dúng số gần nhất 0.500

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

+ Kết xuất đúng yêu cầu :— 0/284

+ Kết xuất đẹp :— 025đ

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;

Uses Crt;Const nMax = 20; Max

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

var a: Mangli n,i,vt: Bytes z, dz Integer; 100; Begin CLrSer; Repeat Writein;

Write(' Nhap vao so phan tu cua day n= ');

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;

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;

Trang 6

Begin

ti= x[i] + (bl - x[k-i*l]) + €; if (t > bl) then begin t r= t - 1; end else h

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

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

begin jd:=jd-alily afil end

else

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

to n do

4£ a[i]>max2 then max2: for i

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

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

begin jđ:=jd-a[4]; ali] end

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 Const fis'nhiphan.inp'; 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:

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

Trang 11

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

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

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

TỪ KHÓA LIÊN QUAN

w