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

Download đề và đáp án thi học sinh giỏi lớp 12 môn tin học 2007 2008 tỉnh quảng bình (đề thi dự bị)

10 525 0

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

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

Nội dung

Dữ liệu vào: Cho trong file văn bản SAP.INP, có cấu trúc như sau: -Dòng 1: Ghi số nguyên dương N, là số lượng phần tử của dãy số... Nút x được gọi là nút cha chung gần nhất của y và z, n

Trang 1

Së Gi¸o dôc-§µo t¹o kú thi CHäN häc sinh giái líp 12 Qu¶ng b×nh n¨m häc 2007-2008

SBD : m«n: tin häc – vßng i vßng i

§Ò chÝnh thøc Thời gian 180 phút, không kể thời gian giao đề

ĐỀ RA

Cho một dãy số nguyên gồm N phần tử A1, A2, , An Trong đó các phần tử đôi một khác nhau.

Yêu cầu: Hãy sắp xếp dãy theo thứ tự tăng dần.

Dữ liệu vào: Cho trong file văn bản SAP.INP, có cấu trúc như sau:

-Dòng 1: Ghi số nguyên dương N, là số lượng phần tử của dãy số (1<=N<=32000) -Dòng 2: Ghi N số nguyên Ai là giá trị của các phần tử của dãy, các số được ghi cách nhau ít nhất một dấu cách (0<Ai<32000)

Dữ liệu ra: Ghi ra file văn bản SAP.OUT, theo cấu trúc như sau:

-Dòng 1: Ghi N số nguyên Ai sau khi đã được sắp xếp, các số được ghi cách nhau

ít nhất một dấu cách.

Ví dụ:

4

1 32000 0 4

0 1 4 32000

Giới hạn thời gian thực hiện chương trình không quá 0.5 giây đối với mọi trường hợp của dữ liệu vào.

Người ta định nghĩa: Số siêu nguyên tố là một số nguyên tố mà khi loại bỏ

đi một số lượng tuỳ ý các chữ số bên phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố

Ví dụ: Số 7331 là một số siêu nguyên tố có 4 chữ số vì 733, 73, 7 cũng là các số nguyên tố

Yêu cầu:

Với một số nguyên dương N cho trước, hãy tìm tất cả các số siêu nguyên tố

có N chữ số.

Dữ liệu vào: Cho trong file văn bản SNT.INP có cấu trúc như sau:

- Dòng 1: Ghi số nguyên dương N (0< N <10).

Dữ liệu ra: Ghi ra file văn bản SNT.OUT theo cấu trúc:

- Dòng 1: Ghi số nguyên dương K, là lượng các số siêu nguyên tố tìm được.

- K dòng tiếp theo: Mỗi dòng ghi một số nguyên dương, là giá trị của số siêu

nguyên tố tìm được.

Ví dụ:

SNT.INP SNT.OUT

23 29

Trang 2

31 37 53 59 71 73 79

Giả sử a1, a2, ,an là dãy hoán vị của các số tự nhiên từ 1 đến N.

Ngời ta định nghĩa: Giá trị của một dãy hoán vị là số thu đợc khi ghép các chữ số trong dãy lại với nhau Chẳng hạn, với N=4, ta có dãy hoán vị 4 1 3 2 Khi đó, giá trị của dãy hoán vị là 4132.

Cho số N và dãy hoán vị a1, a2, , an của các số tự nhiên từ 1 đến N.

Yêu cầu: Hãy tìm hoán vị b1, b2, , bn của các số tự nhiên từ 1 đến N sao cho thỏa mãn đồng thời hai tính chất:

+ |ai - bi| <= 1 (i=1 N)

+ Giá trị của dãy hoán vị b1, b2, , bn là nhỏ nhất

Dữ liệu vào: Cho trong file văn bản PER.INP, có cấu trúc nh sau:

-Dòng 1: Ghi số nguyên dơng N (3 <= N <=9).

-Dòng 2: Ghi N số tự nhiên a1 a2 an là dãy hoán vị của các số từ 1 đến N Các số ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản PER.OUT, theo cấu trúc nh sau:

-Dòng 1: Ghi N số tự nhiên b1 b2 bn là dãy hoán vị tìm đợc theo yêu cầu Các số

đợc ghi cách nhau ít nhất một dấu cách.

Ví dụ:

8 6 4 7 8 5 1 2 3

7 5 6 8 4 1 3 2

Giới hạn thời gian thực hiện chương trỡnh khụng quỏ 1 giõy đối với mọi trường hợp của dữ liệu vào

Sở Giáo dục-Đào tạo kỳ thi CHọN học sinh giỏi lớp 12 Quảng bình năm học 2007-2008

SBD : môn: tin học – vòng i vòng iI

Đề chính thức Thời gian 180 phỳt, khụng kể thời gian giao đề

ĐỀ RA

Trang 3

Cho một số nguyên dơng N gồm có M chữ số (1<=M<=2000) Tìm cách xóa đi trong N gồm K chữ số để đợc số N’ sao cho N’ có giá trị nhỏ nhất (K < M)

Dữ liệu vào: Cho trong file văn bản CATSO.INP, có cấu trúc nh sau:

- Dòng 1: Ghi số hai nguyên dơng N và K Hai số đợc ghi cách nhau ít nhất 1 dấu

cách.

Dữ liệu ra: Ghi ra file văn bản CATSO.OUT, theo cấu trúc nh sau:

- Dòng 1: Ghi số N’ tìm đợc (Vẫn giữ nguyên các chữ số 0 ở đầu số N’ nếu có)

Ví dụ:

CATSO.INP CATSO.OUT

60037 2 003

Cho một dãy số S gồm N phần tử nguyên dơng A1, A2, , An.

Ngời ta định nghĩa: Dãy S đợc gọi là đối xứng nếu với mọi giá trị i:=1 (N div 2) +1 ta luôn có Ai =A(n-i+1) Chẳng hạn, dãy số 1 3 2 3 1 là dãy đối xứng, dãy số

1 2 3 1 3 không phải là dãy đối xứng.

Một dãy S đợc gọi là khả đối xứng nếu ta có thể sắp xếp lại các phần tử của dãy sao cho thu đợc một dãy đối xứng Chẳng hạn: dãy số 1 2 3 1 3 là dãy khả đối xứng, vì ta có thể sắp xếp lại dãy nh sau : 1 3 2 3 1, đây là một dãy đối xứng.

Cho một dãy số S.

Yêu cầu: Hãy xét xem dãy S có phải là dãy khả đối xứng hay không?

Dữ liệu vào: Cho trong file văn bản DKDX.INP, có cấu trúc nh sau:

Dòng 1: Ghi số nguyên dơng N là số lợng phần tử của dãy số S (1<=N<=100) Dòng 2: Ghi N giá trị nguyên Ai , là giá trị của N phần tử của dãy số S Các phần tử

đợc ghi cách nhau ít nhất một dấu cách (1<=Ai<=32767)

Dữ liệu ra: Ghi ra file văn bản DKDX.OUT, theo cấu trúc nh sau:

Dòng 1: Nếu S là dãy khả đối xứng thì ghi Y, ngợc lại thì ghi N (ký tự đợc ghi in

hoa)

Ví d ụ:

5

2 1 4 4 1

2 3 4 4 1

N

Cõu 3: (4.0 điểm) Nỳt cha chung gần nhất ANCES.PAS

Cõy là một cấu trỳc dữ liệu cú nhiều ứng dụng trong tin học Vớ dụ ta cú cõy với 16 nỳt, cỏc nỳt được đỏnh số từ 1 đến 16, nỳt 8 là gốc, như hỡnh sau:

Nỳt x được gọi là nỳt cha của y, nếu tồn tại một đường dẫn từ gốc tới y đi qua x Ở cõy đang xột, nỳt 4 là nỳt cha của nỳt 16, nỳt 10 cũng là nỳt cha của 16

Một nỳt đồng thời là nỳt cha của chớnh mỡnh Ở cõy đang xột, cỏc nỳt 8, 4,

10 và 16 là nỳt cha của 16

Nỳt x được gọi là nỳt cha chung của hai nỳt khỏc nhau y và z, nếu nú vừa là nỳt cha của y, vừa là nỳt cha của z Ở cõy đang xột, cỏc nỳt 8 và 4 đều là nỳt cha

chung của cỏc nỳt 7 và 16

Trang 4

Nút x được gọi là nút cha chung gần nhất của y và z, nếu nó là nút cha chung của hai nút này và trên đường dẫn từ x tới y không còn nút cha chung nào khác của

y và z Ở cây đang xét, 4 là nút cha chung gần nhất của 7 và 16.

Cho một cây gồm N nút, các nút được đánh số từ 1 đến N.

Yêu cầu: Xác định nút cha chung gần nhất của hai nút khác nhau trên cây.

Dữ liệu vào: Cho trong file văn bản ANCES.INP, có cấu trúc như sau:

- Dòng 1: Chứa số 2 nguyên dương N và K Trong đó N là số lượng nút của cây, K

là chỉ số nút gốc 2 ≤ N ≤ 10000.

- N-1 dòng tiếp theo: mỗi dòng chứa 2 số nguyên dương x và y, là chỉ số 2 nút liên

tiếp của cây với x là nút cha của nút y.

- Dòng cuối cùng: chứa 2 số nguyên khác nhau là chỉ số 2 nút cần tìm nút cha

chung gần nhất.

Các số trên cùng một dòng được ghi cách nhau ít nhất một dấu cách.

Dữ liệu ra: Ghi ra file văn bản ANCES.OUT theo cấu trúc:

- Dòng 1: Ghi một số nguyên dương là chỉ số nút cha chung gần nhất tìm được.

Ví dụ:

1 14

8 5

10 16

5 9

4 6

8 4

4 10

1 13

6 15

10 11

6 7

10 2

16 3

8 1

16 12

16 7

Trang 5

Hớng dẫn chấm thi chọn học sinh giỏi lớp 12

năm học 2007-2008

đề thi vòng 1

I/ Ph ơng pháp chung

- Giám khảo tạo các bộ dữ liệu vào, tính toán kết quả Thực hiện chơng trình của học sinh và so sánh kết quả.

- Giám khảo có thể sử dụng chơng trình gợi ý dới đây để tính kết quả của dữ liệu vào.

- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm Nh vậy, nếu câu hỏi có 3 điểm thì giám khảo phải tạo đợc 6 bộ test.

- Nếu chơng trình chạy sai test nào thì giám khảo cho 0 điểm đối với test đó

II/ Ch ơng trình gợi ý

Cõu 1: Sắp dóy tăng dần

{OK}

const fi='sap.inp';

fo='sap.out';

var n:integer;

xl:array[1 32000] of boolean;

f:text;

procedure nhap;

Trang 6

var i,a:integer;

begin

assign(f,fi);

reset(f);

readln(f,n);

for i:=1 to n do

begin

read(f,a);

xl[a]:=true;

end;

close(f);

end;

procedure xuat;

var i:integer;

begin

assign(f,fo);

rewrite(f);

for i:=1 to 32000 do

if xl[i]=true then write(f,i,' ');

close(f);

end;

begin

nhap;

xuat;

end

Câu 2: Số siêu nguyên tố

const fi='snt.inp';

fo='snt.out';

Type mmc=array [1 1000] of longint;

var a,b:mmc;

f:text;

n,ka,kb:longint;

function snt(x:longint):boolean;

var i:longint;

begin

if (x=0) or (x=1) then snt:=false

else

begin

i:=2;

while (x mod i <> 0) and (i<=sqrt(x)) do i:=i+1;

if i> sqrt(x) then snt:=true else snt:=false; end;

end;

procedure doc;

begin

assign(f,fi);reset(f);

readln(f,N);

close(f);

end;

procedure xl;

var i,k,cs:longint;

begin

ka:=1;

a[ka]:=0;

For i:=1 to N do

Begin

Kb:=0;

For k:=1 to ka do

For cs:=0 to 9 do

If snt(a[k]*10+cs) then

Begin

Inc(kb);

b[kb]:=a[k]*10+cs;

end;

ka:=kb;

For k:=1 to ka do a[k]:=b[k];

Trang 7

end;

end;

procedure xuat;

var k:longint;

begin

assign(f,fo);rewrite(f);

writeln(f,ka);

For k:=1 to ka do Writeln(f,a[k]);

close(f);

end;

BEGIN

doc;

xl;

xuat;

END

Câu 3: Hoán vị nhỏ nhất

{$r+} {OK}

program PER;

const

fi='per.in3';

fo='per.ou3';

var

f:text;

A,C:array[1 200] of integer;

B:array[0 200] of 0 1;

n:integer;

procedure nhap;

var i:integer;

begin

Assign(f,fi);

reset(f);

readln(f,n);

read(f,a[1]);

If A[1]=1 then B[A[1]]:=1

else B[A[1]]:=0;

For i:=2 to n do

begin

read(f,A[i]);

C[A[i]]:=i;

end;

close(f);

end;

{ -}

procedure Khoi_tao;

begin

Fillchar(A,sizeof(a),0);

Fillchar(B,sizeof(b),0);

B[0]:=1;

end;

{ -}

Procedure tim_thay_the;

var i:integer;

begin

For i:=1 to n do

If (B[A[i]]=0) and (B[a[i]-1]=0) and (C[a[i]]<C[a[i]-1]) then begin

A[i]:=A[i]-1;

B[a[i]]:=1;

A[c[a[i]]]:=A[c[a[i]]]+1;

B[A[c[a[i]]]]:=1;

end;

end;

{ -}

Procedure xuat;

var i:integer;

Trang 8

Assign(f,fo);

rewrite(f);

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

close(f);

end;

{ -}

begin

Khoi_tao;

nhap;

tim_thay_the;

xuat;

end

Hớng dẫn chấm thi chọn học sinh giỏi lớp 12

năm học 2007-2008

đề thi vòng 2

I/ Ph ơng pháp chung

- Giám khảo tạo các bộ dữ liệu vào, tính toán kết quả Thực hiện chơng trình của học sinh và so sánh kết quả.

- Giám khảo có thể sử dụng chơng trình gợi ý dới đây để tính kết quả của dữ liệu vào.

- Chơng trình học sinh chạy đúng mỗi bộ test, giám khảo cho 0.5 điểm Nh vậy, nếu câu hỏi có 3 điểm thì giám khảo phải tạo đợc 6 bộ test.

- Nếu chơng trình chạy sai test nào thì giám khảo cho 0 điểm đối với test đó

II/ Ch ơng trình gợi ý

Cõu 1: Cắt số

{$R+} {OK}

Const fi='CATSO.IN1';

fo='CATSO.OU9';

Var mang:Array[0 35000] of Byte;

k,dem:Word;

f,g:Text;

time:longint;

procedure nhap;

Var ch:Char;

code:Integer;

Begin

Trang 9

Assign(f,fi);

reset(f);

assign(g,fo);

rewrite(g);

Read(f,ch);

dem:=0;

While ch<>' ' do

Begin

Inc(dem);

Val(ch,mang[dem],code);

Read(f,ch);

End;

Read(f,k);

Close(f);

End;

Procedure Xuli;

Var i,j,h:Word;

Begin

For i:=1 to k do

Begin

j:=1;

While (mang[j]<=mang[j+1]) and (j<>dem) do Inc(j); For h:=j to dem do mang[h]:=mang[h+1];

dec(dem);

End;

End;

procedure xuat;

Var i:Word;

Begin

For i:=1 to dem do

Write(g,mang[i]);

Close(g);

End;

Begin

time:=meml[0:$46c];

nhap;

Xuli;

xuat;

writeln('Thoi gian ',(meml[0:$46c]-time)/18.21:8:4);

readln;

End

Câu 2: Dãy khả đối xứng

const fi='dkdx.inp';

fo='dkdx.out';

maxn=32767;

type mmc=array[1 maxn] of byte;

var a:mmc;

n:integer;

f:text;

procedure doc;

var i,x:integer;

begin

assign(f,fi);

reset(f);

readln(f,n);

for i:=1 to N do

begin

read(f,x);

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

end;

close(f);

end;

procedure xl;

var i,dem:integer;

begin

Trang 10

dem:=0;

for i:=1 to maxn do

if a[i] mod 2<>0 then dem:=dem+1;

assign(f,fo);rewrite(f);

if dem>1 then write(f,'N') else write(f,'Y'); close(f);

end;

Begin

doc;

xl;

End

Câu 3: Nút cha chung gần nhất

s{$R+} {xong} {OK}

const fi='ances.in3';

fo='ances.ou3';

type a=array[0 10000] of word;

b=array[0 10000] of 0 1;

var mang:a;

mang1:b;

n,k,tim1,tim2:word;

f,g:text;

procedure nhap;

var i,x,y:word;

begin

assign(f,fi);

assign(g,fo);

reset(f);

rewrite(g);

readln(f,n,k);

for i:= 1 to n-1 do

begin

readln(f,x,y);

mang[y]:=x;

end;

mang[k]:=0;

readln(f,tim1,tim2 );

close(f);

end;

procedure xuli;

var h:word;

begin

if tim1=tim2 then

begin

writeln(g,tim1);

exit;

end;

h:= tim1;

while h<> 0 do

begin

mang1[h]:=1;

h:=mang[h];

end;

h:=tim2;

repeat

h:=mang[h]

until mang1[h]=1;

writeln(g,h);

end;

Begin

nhap;

xuli;

close(g);

end

Ngày đăng: 11/10/2015, 13:33

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

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

w