1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đề thi lập đội tuyển dự thi quốc gia tỉnh đắc lắc năm học 2013 2014

13 225 0

Đ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 13
Dung lượng 527,38 KB

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

Nội dung

Cho file BAI1.INP mỗi dòng chứa một xâu ký tự.. Dữ liệu ra: Ghi vào file văn bản có tên BAI2.OUT có cấu trúc như sau: - Dòng đầu ghi số lượng kết quả tìm được.. - Các dòng sau mỗi dòng

Trang 1

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013 - 2014

ĐỀ CHÍNH THỨC MÔN: TIN HỌC

Ngày thi: 24/10/2013

Đề thi này gồm 02 trang (Thời gian làm bài 180 phút, không kể thời gian giao đề)

Bài File bài làm Dữ liệu vào Kết quả

Bài 1(6 điểm) - Từ đối xứng

Hai từ được gọi là đối xứng nếu từ này là từ đảo ngược của từ kia Cho file BAI1.INP mỗi dòng chứa một xâu ký tự Hãy in ra số từ phân biệt có từ đối xứng ở trong mỗi dòng Kết quả in ra file BAI1.OUT, mỗi dòng ghi số từ phân biệt có từ đối xứng Nếu không có ghi kết quả là số 0

Ví dụ:

BAI1.INP BAI1.OUT

a 0

ab ab cd ba cd ba dc dc 2

tom la mot loai dong vat 1

Bài 2(7 điểm) - Biểu thức zero

Cho một số tự nhiên N ≤ 9 Dãy số được tạo thành gồm các chữ số từ 1 đến N theo thứ

tự đó Hãy điền vào các dấu + , - , hoặc là không điền dấu nào cả để tạo thành biểu thức có kết quả thu được bằng 0 Hãy viết chương trình tìm tất cả các khả năng có thể

Dữ liệu vào: Lấy từ file văn bản BAI2.INP với một dòng ghi số N

Dữ liệu ra: Ghi vào file văn bản có tên BAI2.OUT có cấu trúc như sau:

- Dòng đầu ghi số lượng kết quả tìm được

- Các dòng sau mỗi dòng ghi một kết quả tìm được

Ví dụ

1-2-3-4-5+6+7 = 0 1-2+3+4-5+6-7 = 0 1-23-45+67 = 0 1-23+4+5+6+7 = 0 1+2-3-4+5+6-7 = 0 1+2-3+4-5-6+7 = 0

Trang 2

Trang 2

Bài 3( 7 điểm) - Tam giác số

Hình sau mô tả một tam giác số có số hàng N=5:

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

Đi từ đỉnh (số 7) đến đáy tam giác bằng một đường gấp khúc, mỗi bước chỉ được đi từ

số ở hàng trên xuống một trong hai số đứng kề bên phải hay bên trái ở hàng dưới, và cộng các số trên đường đi lại ta được một tổng

Ví dụ: đường đi 7 8 1 4 6 có tổng là S=26, đường đi 7 3 1 7 5 có tổng là S=23

Trong hình trên, tổng Smax=30 theo đường đi 7 3 8 7 5 là tổng lớn nhất trong tất cả các tổng

Nhiệm vụ của bạn là viết chương trình nhận dữ liệu vào là một tam giác số chứa trong text file BAI3.INP và đưa ra kết quả là giá trị của tổng Smax

Dữ liệu: cho trong file văn bản BAI3.INP:

- Dòng thứ 1: có duy nhất 1 số N là số hàng của tam giác số (0<N<100)

- N dòng tiếp theo, từ dòng thứ 2 đến dòng thứ N+1: dòng thứ i có (i-1) số cách nhau bởi dấu trống (space)

Kết quả: Ghi ra file văn bản BAI3.OUT

Ví dụ:

5 30

7

3 8

8 1 0

2 7 4 4

4 5 2 6 5

- Hết -

 Thí sinh không được sử dụng tài liệu

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

Họ và tên thí sinh……… ……… Số báo danh………

Trang 3

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013 - 2014

HƯỚNG DẪN CHẤM MÔN: TIN HỌC

(Hướng dẫn chấm gồm 4 trang) Ngày thi: 24/10/2013

I Phần chương trình nguồn

BÀI 1 –TỪ ĐỐI XỨNG

var f,g:text;st:string;

Function tudao(st:string):string;

Var i:integer;st1:string;

Begin

st1:='';

For i:=length(st) downto 1 do

st1:=st1+st[i];

tudao:=st1;

End;

Function demtudx(st:string):integer;

Var dem:integer;tu,tu1:string;

Begin

dem:=0;

st:=st+' ';

While length(st)>1 do

Begin

While st[1]=' ' do

delete(st,1,1);

tu:=copy(st,1,pos(' ',st));

if st<>'' then

st:=' '+st;

tu:=' '+tu;

While pos(tu,st)>0 do

delete(st,pos(tu,st),length(tu)-1);

tu1:=tudao(tu);

If (pos(tu1,st)>0) and (st[pos(tu1,st)+length(tu1)-1]=' ') then

inc(dem);

demtudx:=dem;

End;

end;

procedure xuly;

Var st:string;

Begin

Assign(f,'bai1.inp');

Reset(f);

Assign(g,'bai1.out');

Rewrite(g);

While not eof(f) do

Begin

Readln(f,st);

Writeln(g,demtudx(st));

End;

Trang 4

Trang 2

Close(f);

Close(g);

End;

Begin

xuly;

End

BÀI 2 – Biểu thức zero

Program Zero_sum;

Type MangStr = array[1 15] of string;

Const Fi ='BAI2.INP';

Fo ='BAI2.OUT';

Dau : array[1 3] of string[1] = ('-','+','');

S : array[1 9] of char =('1','2','3','4','5','6','7','8','9');

ChuSo = ['1' '9'];

Var N,k,dem: byte;

D : array[2 9] of string[1];

F : Text;

St : String;

M : MangStr;

Procedure Write_out;

Var i : byte;

Begin

Assign(F,Fo); Rewrite(F);

Writeln(F,dem);

For i:= 1 to dem do writeln(F,M[i],' = 0');

Close(F); Halt;

End;

Procedure Read_inp;

Begin

Assign(F,Fi); Reset(F);

Read(F,N); Close(F);

If N < 3 then write_out;

End;

Function DocSo(S : String): longint;

Var M : longint;

t : byte;

Begin

M:= 0; t:= 0;

If S[k] in ['+','-'] then

begin

t:= k; Inc(k);

end;

While (k<= length(S)) and (s[k] in ChuSo) do

begin

m:= m*10 + ord(s[k]) - ord('0');

Inc(k);

end;

Trang 5

Trang 3

If (t <> 0) and (S[t] = '-') then DocSo:= -M

else DocSo:= M;

End;

Procedure Test;

Var St : string;

i : byte;

T : longint;

Begin

St:= '1'; k:= 1; T:= 0;

For i:= 2 to N do St:= St + D[i] + S[i];

While k < length(St) + 1 do T:= T + DocSo(St);

If T = 0 then

begin

Inc(dem); M[dem]:= St;

end;

End;

Procedure Try(i: byte);

Var j : byte;

Begin

For j:= 1 to 3 do

begin

D[i]:= Dau[j];

If i = N then Test else try(i+1);

end;

End;

BEGIN

Read_inp;

Try(2);

Write_out;

END

BÀI 3 – TAM GIÁC SỐ

{ QUY HOẠCH ĐỘNG}

Program bai3;

Uses crt;

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

Var

f:text;

i,j,n:integer;

a,b:mang;

Procedure Input;

Begin

clrscr;

Assign(f,'bai3.inp');

reset(f);

readln(f,n);

for j:=1 to n do

begin

for i:=2 to j+1 do

read(f,a[j,i]);

end;

Trang 6

Trang 4

close(f);

end;

{ -}

Function Max(m,n:integer):integer;

Begin

if n>m then Max:=n

else Max:=m;

end;

{ -}

Procedure MakeArrayOfQHD;

Begin

b[1,2]:=a[1,2];

for j:=1 to n do b[j,1]:=-maxint;

for i:=3 to n do b[1,i]:=-maxint;

for j:=2 to n do

begin

for i:=2 to j+1 do

b[j,i]:=a[j,i]+max(b[j-1,i],b[j-1,i-1]);

end;

end;

{ -}

Procedure FindMax;

var max:integer;

Begin

max:=b[n,1];

for i:=2 to n do

if b[n,i]>max then max:=b[n,i];

assign(f,'bai3.out');rewrite(f);

write(f,max);

close(f);

end;

{ -}

BEGIN

Input;

makearrayofQHD;

FindMax;

END

II Hướng dẫn chấm

Bài 1: 3 Test, mỗi test đúng cho 2 điểm

Bài 2: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mẫu ví dụ

Bài 3: 3 Test, mỗi test đúng cho 2 điểm + 1 điểm test mẫu ví dụ

Chú ý: Kết quả có thể có nhiều phương án khác nhau do đó yêu cầu giám khảo xem xét kỹ khi chấm bài

Hết

Trang 7

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013 - 2014

ĐỀ CHÍNH THỨC MÔN: TIN HỌC

Ngày thi: 25/10/2013

Đề thi này gồm 02 trang (Thời gian làm bài 180 phút, không kể thời gian giao đề)

Bài 1: - Biến đổi xâu BAI1.PAS BAI1.INP BAI1.OUT

Bài 1(10 điểm) - Biến đổi xâu

Cho xâu kí tự U = u1u2…un , trong đó ui  {a,b,c} = X (i=1,2,…,n) Các phép biến đổi sau đây (đánh số thứ tự từ 1 đến 9) cho phép thay thế hai kí tự liên tiếp nhau trong xâu đã cho bởi một kí tự:

Trong đó xi X, i=1,2, ,9

Cần tìm cách áp dụng lần lượt các phép toán biến đổi đã có để chuyển xâu U về một kí

Dữ liệu vào: cho trong file văn bản BAI1.INP:

- Dòng đầu ghi số n

- N dòng tiếp theo mỗi dòng chứa một kí tự của xâu U theo thứ tự từ u1 đến un

- Dòng thứ i trong số 9 dòng tiếp theo chứa chữ cái xi , i=1,2, ,9

- Dòng cuối cùng chứa chữ cái w

Kết quả tìm được ghi ra file văn bản BAI1.OUT theo quy cách sau:

- Dòng đầu tiên ghi số lượng phép biến đổi M cần áp dụng để chuyển xâu U thành chữ cái w, dòng này ghi số 0 nếu không tìm được phép biến đổi như vậy

- Nếu có thể biến đổi xâu đã cho về một kí tự thì dòng thứ i trong số M dòng tiếp theo ghi số thứ tự của phép biến đổi cần sử dụng và các chỉ số của hai kí tự liên tiếp nhau trong xâu đang biến đổi cần thay thế bằng một kí tự

Ví dụ:

5

b

b

b

b

a

b

b

a

c

4

4 4 5

5 1 2

5 1 2

6 1 2

Trang 8

Trang 2

b

a

a

c

c

a

Dãy biến đổi có thể mô tả trong sơ đồ sau: (w = a)

bbbba (4)  bbbc (5)  bbc (5)  bc (6)  a

Bài 2(10 điểm) - Đội cờ

Có hai đội cờ vua A và B thi đấu với nhau Mỗi đội cờ cử ra n kỳ thủ, mỗi kỳ thủ của đội B chỉ đấu một trận và chỉ đấu với một kỳ thủ của đội A và ngược lại Vậy có tất cả n trận đấu Đội nào thắng được 2 điểm, hoà được 1 điểm và thua được 0 điểm Cho đội B được quyền chọn cặp thi đấu

Yêu cầu:

Lập trình để đội B chọn được các cặp thi đấu sao cho tổng số điểm của đội B là cao nhất, cho biết trình độ của cầu thủ thứ i của đội A và B lần lượt là a[i] và b[i]

(i=1,2,…,n) và giả sử trong thi đấu, hai kỳ thủ có trình độ ngang nhau sẽ hoà và kỳ thủ nào có trình độ cao hơn sẽ thắng

Dữ liệu:

Ghi trên file văn bản BAI2.INP gồm n+1 dòng:

 Dòng đầu tiên ghi số nguyên dương n, 1≤n≤1000

 Dòng thứ i+1 ghi 2 số nguyên a[i], b[i] (1≤a[i], b[i]≤100) cách nhau ít nhất một khoảng trắng

Kết quả:

Ghi ra file văn bản BAI2.OUT gồm n+1 dòng

 Dòng đầu ghi số nguyên T là tổng số điểm cao nhất mà đội B có thể đạt được

 Dòng thứ i+1 (1≤i≤n) ghi số nguyên dương x[i] (1≤x[i]≤n) với x[i] là số thứ tự của kỳ thủ đội B phải thi đấu với kỳ thủ thứ i của đội A để tổng số điểm của đội

B đạt được là T

Ví dụ:

4

7 8

5 6

4 3

9 4

5

1

2

4

3 - Hết -

 Thí sinh không được sử dụng tài liệu

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

Họ và tên thí sinh……… ……… Số báo danh………

Trang 9

Trang 1

SỞ GIÁO DỤC VÀ ĐÀO TẠO KỲ THI LẬP ĐỘI TUYỂN DỰ THI QUỐC GIA TỈNH ĐẮK LẮK NĂM HỌC 2013 - 2014

HƯỚNG DẪN CHẤM MÔN: TIN HỌC

(Hướng dẫn chấm gồm có 5 trang) Ngày thi: 25/10/2013

I Phần chương trình nguồn

Bài 1:

program biendoixau;

{$B-,Q+,R+} {$M 65500,0,655360}

const

maxN = 20;

fi = 'BAI1.INP' ; fo = 'BAI1.OUT';

bd: array[1 9] of string[2]= ('aa','ab','ac','ba','bb',

'bc','ca','cb','cc');

type

sN= string[maxN]; s9= string[9];

mang= array[1 maxN] of byte;

var

a, vt: mang; m,n: byte;

u: sN; x: s9; w: char; f: text;

procedure khoitao;

var i:byte;

begin

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

readln(f,n);

u:= ''; x:= ''; m:= n-1;

for i:=1 to n do

begin

readln(f,w); u:=u+w;

end;

for i:=1 to 9 do

begin

readln(f,w); x:=x+w;

end;

read(f,w); close(f);

end;

procedure check;

var

t,i,kt: byte; s:sN;

begin

s:= u;

for i:=1 to m do

begin

t:= pos(bd[a[i]],s);

if t = 0 then exit;

vt[i]:= t; delete(s,t,2);

insert(x[a[i]],s,t);

end;

if pos(w,s) > 0 then

begin

writeln(f,m);

Trang 10

Trang 2

for i:= 1 to m do

writeln(f,a[i],' ',vt[i], ' ',vt[i]+1);

close(f);halt;

end;

end;

procedure tim(i:byte);

var j:byte;

begin

if i>m then check

else for j:=1 to 9 do

begin

a[i]:= j; tim(i+1);

end;

end;

procedure xuly;

begin

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

tim(1); write(f,0); close(f);

end;

BEGIN

khoitao; xuly;

END

BÀI 2:

program doico;

const

tfi = 'BAI2.INP';

tfo = 'BAI2.OUT';

maxN = 1000;

var

fi, fo : text;

N : integer;

dd,x,a,b,csA,csB : array[1 maxN] of integer;

DiemMax : integer;

procedure Docdl;

var i: integer;

begin

assign(fi,tfi); reset(fi);

readln(fi,N);

for i:=1 to N do read(fi,a[i],b[i]);

close(fi);

end;

procedure Doi(var u,v: integer);

var w: integer;

begin

w:=u;

u:=v;

v:=w;

end;

procedure SortA(k,l: integer);

Trang 11

Trang 3

var i,j,mid: integer;

begin

mid:=a[(k+l) div 2];

i:=k; j:=l;

repeat

while a[i]<mid do inc(i);

while a[j]>mid do dec(j);

if i<=j then

begin

Doi(a[i],a[j]);

Doi(csA[i],csA[j]);

inc(i);

dec(j);

end;

until i>j;

if j>k then SortA(k,j);

if i<l then SortA(i,l);

end;

procedure SapxepA;

var i: integer;

begin

for i:=1 to N do csA[i]:=i;

SortA(1,N);

end;

procedure SortB(k,l: integer);

var i,j,mid: integer;

begin

mid:=b[(k+l) div 2];

i:=k;

j:=l;

repeat

while b[i]>mid do inc(i);

while b[j]<mid do dec(j);

if i<=j then

begin

Doi(b[i],b[j]);

Doi(csB[i],csB[j]);

inc(i);

dec(j);

end;

until i>j;

if j>k then SortB(k,j);

if i<l then SortB(i,l);

end;

procedure SapXepB;

var i: integer;

begin

for i:=1 to N do csB[i]:=i;

SortB(1,n);

end;

Trang 12

Trang 4

function TimA(r: integer): integer;

var i: integer;

begin

for i:=n downto 1 do

if (dd[csA[i]]=0) and (a[i]<r) then

begin

TimA:=i;

exit;

end;

for i:=n downto 1 do

if (dd[csA[i]]=0) and (a[i]=r) then

begin

TimA:=i;

exit;

end;

TimA:=0;

end;

procedure Ghep;

var j,limit,i,k: integer;

begin

fillchar(dd,sizeof(dd),0);

fillchar(x,sizeof(x),0);

i:=1;

DiemMax:=0;

limit:=n;

repeat

k:=TimA(b[i]);

if k>0 then

begin

x[csA[k]]:=csB[i];

dd[csA[k]]:=1;

if b[i]>a[k] then inc(DiemMax,2) else inc(DiemMax,1);

limit:=k-1;

inc(i);

end;

until k=0;

for j:=i to N do

begin

repeat inc(k) until dd[k]=0;

x[k]:=csB[j];

end;

end;

procedure inkq;

var i: integer;

begin

assign(fo,tfo); rewrite(fo);

writeln(fo,diemMax);

for i:=1 to N do writeln(fo,x[i]);

close(fo);

end;

BEGIN

Trang 13

Trang 5

Docdl;

SapXepA;

SapXepB;

Ghep;

Inkq;

END

II Hướng dẫn chấm

Bài 1: 5 Test, mỗi test đúng cho 2 điểm

Bài 2: 5 Test, mỗi test đúng cho 2 điểm

Chú ý: Kết quả có thể có nhiều phương án khác nhau do đó yêu cầu giám khảo xem xét

kỹ khi chấm bài

Hết

Ngày đăng: 10/10/2016, 10:19

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