1. Trang chủ
  2. » Trung học cơ sở - phổ thông

Đề thi học sinh giỏi tin lớp 11

14 196 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 14
Dung lượng 83,5 KB

Nội dung

Hãy tìm cách xếp các bức tranh chồng lên nhau thỏa mãn đồng thời các điều kiện sau: -Bức tranh ở trên phải luôn nằm trong bức tranh ở dới mọi điểm của bức tranh ở trên không đợc chìa ra

Trang 1

Câu 1: (3 điểm) DAYSO.PAS

Cho một số nguyên dơng N (N<=10000) Hãy tìm dãy số thỏa mãn các tính chất sau:

-Phần tử đầu tiên của dãy là số N.

-Các phần tử của dãy là các số nguyên dơng và phải giảm dần.

-Với mỗi số ai (i>1) thuộc dãy thì ai hoặc là số nguyên tố hoặc là ớc của một trong các số từ a1 đến ai-1

-Số lợng phần tử của dãy tìm đợc phải lớn nhất.

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

sau:

Dòng 1: Ghi số N.

Dữ liệu ra: Ghi ra file DAYSO.OUT theo cấu trúc nh sau:

Dòng 1: Ghi số K là số lợng phần tử của dãy tìm đợc.

Dòng 2: Ghi K số nguyên dơng là các phần tử của dãy tìm đợc Các số ghi cách nhau ít nhất một dấu cách.

Ví dụ:

6 5 3 2 1

Trong một biểu thức gồm có các biến, phép toán nhân và lũy thừa, số mũ.

Trong đó: Biến là một chữ cái la tinh in thờng ‘a’ ‘z’, phép nhân

đợc ký hiệu là dấu sao ‘*’, phép lũy thừa đợc ký hiệu là dấu mũ

‘^’, số mũ là một chữ số trong các chữ số từ 1 9.

Hãy rút gọn biểu thức có dạng nh đã cho để đợc biểu thức mới thỏa mãn đồng thời các điều kiện sau:

-Các biến xuất hiện trong biểu thức không quá 1 lần.

-Các biến phải đợc đa ra theo thứ tự từ điển.

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

nh sau:

Dòng 1: Ghi xâu ký tự S là biểu thức cần rút gọn (số lợng ký tự của S bé hơn 256)

Dữ liệu ra: Ghi ra file BIEUTHUC.OUT theo cấu trúc nh sau:

Dòng 1: Ghi xâu X là xâu ký tự sau khi đã rút gọn.

Chú ý: Sau khi rút gọn, giá trị của số mũ m của các biến có thể nằm trong đoạn [1 1000].

Ví dụ:

Trang 2

BIEUTHUC.INP BIEUTHUC.OUT

a*a^9*x*x*x*b*b^3 a^10*b^4*x^3

Tranh vẽ là một hình chữ nhật Cho N bức tranh, bức tranh thứ i đợc cho bởi độ dài hai cạnh là ai và bi Hãy tìm cách xếp các bức tranh chồng lên nhau thỏa mãn đồng thời các điều kiện sau:

-Bức tranh ở trên phải luôn nằm trong bức tranh ở dới (mọi

điểm của bức tranh ở trên không đợc chìa ra ngoài so với bức tranh ở dới).

-Các cạnh của bức tranh trên phải đợc đặt song song với các cạnh của bức tranh ở dới nó.

-Số lợng các bức tranh đợc xếp là lớn nhất.

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

nh sau:

Dòng 1: Ghi số N là số lợng các bức tranh đã cho (N nguyên dơng, n<=100)

N dòng tiếp theo: mỗi dòng ghi hai số ai bi (0< xi , yi <30000)

là độ dài hai cạnh của bức tranh Hai 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 XEPTRANH.OUT theo cấu trúc sau:

Dòng 1: Ghi số K là số lợng bức tranh tìm đợc.

Dòng 2: Ghi K số nguyên dơng là chỉ số của các bức tranh đợc chọn Các số đợc ghi theo thứ tự từ dới lên trên của chồng tranh

đ-ợc xếp Các số ghi cách nhau ít nhất 1 dấu cách.

Ví dụ:

XEPTRANH.INP XEPTRANH.OUT

6 5

2 4

3 5

Trang 3

hớng dẫn chấm

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ả Chạy

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 mẫu để tính kết quả của dữ liệu vào: DAYSO.PAS BIEUTHUC.PAS XEPTRANH.PAS

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

- Bài toán có thể có nhiều kết quả đúng, nếu kết quả của học sinh khác với đáp án nhng vẫn đúng thì giám khảo vẫn cho

điểm tối đa.

- Giám khảo có thể sử dụng các test gợi ý dới đây nếu cần thiết.

II/ Ch ơng trình mẫu

DAYSO.PAS

const fi='dayso.in3'; fo='dayso.ou3';

type mmc=array[1 10000] of word;

var f:text; n,dem:word; a:mmc;

procedure doc;

begin

assign(f,fi);reset(f); readln(f,n); close(f);

end;

function nt(i:word):boolean;

var j:word;

begin

nt:=true;

for j:=2 to trunc(sqrt(i)) do

if i mod j = 0 then

begin nt:=false; break; end;

end;

procedure xl;

var i,j:word;

Trang 4

dem:=1; a[dem]:=n;

for i:=n-1 downto 1 do

begin

if nt(i) then

begin dem:=dem+1; a[dem]:=i; end

else

begin

for j:=1 to dem do

if a[j] mod i=0 then

begin dem:=dem+1;a[dem]:=i;break; end;

end;

end;

end;

procedure xuat;

var i:word;

begin

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

for i:=1 to dem do write(f,a[i],' ');

close(f);

end;

begin doc; xl; xuat; end

BIEUTHUC.PAS

const fi='bieuthuc.in1'; fo='bieuthuc.ou1';

type mmc=array['a' 'z'] of word;

var f:text; s:string; a:mmc;

procedure doc;

begin assign(f,fi);reset(f); readln(f,s); close(f); end;

procedure xl;

var so,ml:integer;

begin

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

while s<>'' do

begin

if length(s)=1 then begin [s[1]]:=a[s[1]]+1;delete(s,1,1);

end

else

begin

if s[2]='*' then

begin a[s[1]]:=a[s[1]]+1; delete(s,1,2); end;

if s[2]='^' then

begin

val(s[3],so,ml); a[s[1]]:=a[s[1]]+so; delete(s,1,4);

end;

end;

end;

close(f);

end;

procedure xuat;

var c:char; s1,s2:string;

begin

Trang 5

assign(f,fo); rewrite(f); s1:='';

for c:='a' to 'z' do

begin

if a[c]>0 then

if a[c]>1 then begin str(a[c],s2);s1:=s1+c+'^'+s2+'*'; end

else s1:=s1+c+'*';

end;

delete(s1,length(s1),1); writeln(f,s1);

close(f);

end;

begin doc; xl; xuat; end

XEPTRANH.PAS

const fi='xeptranh.inp'; fo='xeptranh.out';

type mmc=array[0 100] of longint;

var f:text; n:word; a,b,qh,tr,cs:mmc;

procedure doc;

var i:word;t:longint;

begin

assign(f,fi);reset(f); readln(f,n); a[0]:=0;b[0]:=0;

for i:=1 to n do

begin

readln(f,a[i],b[i]);

if a[i]> b[i] then

begin t:=a[i];a[i]:=b[i];b[i]:=t; end;

end;

close(f);

for i:=1 to n do cs[i]:=i;

end;

procedure sx;

var i,j:word; t:longint;

begin

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]*b[i]>a[j]*b[j] then

begin

t:=a[i];a[i]:=a[j];a[j]:=t;

t:=b[i];b[i]:=b[j];b[j]:=t;

t:=cs[i];cs[i]:=cs[j];cs[j]:=t;

end;

end;

procedure xl;

var i,j:word;

begin

sx; fillchar(qh,sizeof(qh),0);

for i:=1 to n do

for j:=0 to i-1 do

if (a[i]>=a[j]) and (b[i]>=b[j]) then

if qh[i]<qh[j]+1 then

begin qh[i]:=qh[j]+1;tr[i]:=j;end;

end;

procedure xuat;

Trang 6

var i,max,vt:word;

begin

assign(f,fo);rewrite(f); max:=qh[1]; vt:=1;

for i:=1 to n do

if max<qh[i] then begin max:=qh[i]; vt:=i;end;

i:=vt; writeln(f,max);

while qh[i]<>0 do

begin write(f,cs[i],' '); i:=tr[i]; end;

close(f);

end;

begin doc; xl; xuat; end

III/ Mét sè test gîi ý.

DAYSO.PAS

1

10 7 5 3 2 1

20 19 17 13 11 10 7 5 4 3 2 1

BIEUTHUC.PAS

BIEUTHUC.IN x^7*l^3*i^8*s^6*j^6*q*y^9*r^2*v*s^6*e^7*

m^7*z^2*o^6 BIEUTHUC.O

U e^7*i^8*j^6*l^3*m^7*o^6*q*r^2*s^12*v*x^ 7*y^9*z^2 BIEUTHUC.IN a^8*v*j^3*t^5*p*a^9*i^7*q^3*u^7*x^5*b*z^6*j

^9*s*b^8*u^7

BIEUTHUC.O

U a^17*b^9*i^7*j^12*p*q^3*s*t^5*u^14*v*x^ 5*z^6 BIEUTHUC.IN x*x*x*x*x*x*a*x

BIEUTHUC.O

XEPTRANH.PAS

10

21 1

4 7

6 5

2 4

3 5

6 8

7 6

10 20

12 19

13 17

6

8 6 7 2 5 4

5

4 6

7 4

4

2 4 3 5

Trang 7

3 5

7 3

2 1

1

6

1 20

2 19

3 18

4 17

5 16

6 15

1

1

Giám khảo lu ý khi sử dụng các test để chấm bài:

+ Tổng số lợng bức tranh của học sinh bắt buộc phải giống

đáp án.

+ Chỉ số của bức tranh có thể có nhiều cách khác nhau.

Cho dãy số có N phần tử (1<=N<=400000) Trong đó các phần từ ai của dãy đều đôi một khác nhau (tức không có phần tử trùng nhau, 0<=ai<=400000) Hãy tìm các sắp xếp dãy số theo trật tự tăng dần.

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

sau:

Dòng 1: Ghi số N là số lợng các phần tử của dãy đã cho (N nguyên dơng)

Dòng 2: Ghi N số nguyên không âm ai 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 SAPDAY.OUT theo cấu trúc sau:

Dòng 1: Ghi N số nguyên không âm là các phần tử của dãy sau khi đã sắp theo trật tự tăng dần.

Ví dụ:

Trang 8

SAPDAY.INP SAPDAY.OUT

4 6 400000 3

Một nhóm gồm N học sinh tham gia một câu lạc bộ Biết thời gian mà học sinh i có mặt tại câu lạc bộ là [ai ,bi] (ai < bi) Cô giáo chủ nhiệm câu lạc bộ muốn đến thăm các học sinh trong nhóm Hãy giúp cô giáo xác định thời điểm đến câu lạc bộ để gặp đợc nhiều học sinh trong nhóm nhất.

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

sau:

Dòng 1: Ghi số N (N nguyên dơng, N<=1000)

N dòng: mỗi dòng ghi 2 số nguyên không âm ai bi (0<= ai , bi

<=32766) 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 GAPMAT.OUT theo cấu trúc:

Dòng 1: Ghi số nguyên dơng k là số lợng học sinh có mặt tại câu lạc bộ khi cô giáo đến.

Dòng 2: Ghi chỉ số của k học sinh có mặt tại câu lạc bộ khi cô

đến Các số ghi cách nhau ít nhất một dấu cách, theo thứ tự tăng dần.

Ví dụ:

GAPMAT.INP GAPMAT.OUT GAPMAT.INP GAPMAT.OUT

9 11

Cho N hình chữ nhật (1<=N<=100), mỗi hình đợc cho bởi hai số nguyên dơng là độ dài hai cạnh Quan hệ “bao hàm” đợc

định nghĩa nh sau: Hình chữ nhật A đợc gọi là có quan hệ bao hàm với hình B nếu nh đặt trọn hình A vào trong hình B hoặc đặt trọn hình B trong hình A (Các cạnh của hình A phải

Trang 9

song song với các cạnh tơng ứng của hình B, cho phép có thể chung nhau các điểm biên)

Hãy tìm tập con trong tập N hình chữ nhật đã cho sao cho thỏa mãn đồng thời các điều kiện sau:

-Có số lợng hình là nhiều nhất.

-Hai hình bất kỳ trong tập con không thể có quan hệ bao hàm nhau.

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

Dòng 1: Ghi số N (N nguyên)

N dòng tiếp theo: mỗi dòng ghi hai số xi yi (0< xi , yi <=30000)

là độ dài hai cạnh của hình chữ nhật Hai 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 HCN.OUT theo cấu trúc sau:

Dòng 1: Ghi số K là số lợng hình chữ nhật tìm đợc.

K dòng tiếp theo: Mỗi dòng ghi hai số nguyên xi yi là độ dài hai cạnh của các hình chữ nhật tìm đợc Hai số ghi cách nhau ít nhất một dấu cách.

Ví dụ:

2 4

3 5

hớng dẫn chấm

Trang 10

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ả Chạy

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 mẫu để tính kết quả của dữ liệu vào: SAPDAY.PAS GAPMAT.PAS HCN.PAS

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

- Bài toán có thể có nhiều kết quả đúng, nếu kết quả của học sinh khác với đáp án nhng vẫn đúng thì giám khảo vẫn cho

điểm tối đa.

- Giám khảo có thể sử dụng các test gợi ý dới đây nếu cần thiết.

II/ Ch ơng trình mẫu

SAPDAY.PAS

const fi='sapday.in1';

fo='sapday.ou1';

maxn=10000;

type mmc=array[0 50000] of byte;

var a:mmc; n:longint; f:text;

procedure xl;

var i,x:longint;b,bi:word;

begin

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

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

readln(f,n);

for i:=1 to n do

begin

read(f,x);b:=x shr 3;bi:=x and 7; a[b]:=a[b] or (1 shl bi);

end;

close(f);

end;

procedure xuat;

var f:text; i:longint;j:byte;

begin

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

for i:=0 to 50000 do

for j:=0 to 7 do

if ((a[i] shr j) and 1)=1 then write(f,i*8+j,' ');

close(f);

end;

procedure tt;

var f:text; i,j,x:longint;

begin

assign(f,fi);rewrite(f);

writeln(f,maxn); randomize;

for i:=1 to maxn do

begin

Trang 11

x:=0;

for j:=1 to 8 do x:=x+random(50000);

write(f,x,' ');

end;

close(f);

end;

begin xl; xuat; end

GAPMAT.PAS

Const Fi='gapmat.in2';

fo='gapmat.ou2';

type mmc=Array[0 32766] of integer;

Var a,d,c:^mmc; F :Text; n,max,vmax:integer; ti:longint;

Procedure Init;

Var i,j : integer;

Begin

Assign(f,fi); Reset(f);

Readln(f,n);

new(a);new(c);new(d);

for i:=0 to 32766 do a^[i]:=0;

For i:=1 to n do

Begin

Readln(f,d^[i],c^[i]);

for j:=d^[i] to c^[i] do a^[j]:=a^[j]+1;

End;

Close(f);

max:=a^[1]; vmax:=1;

for i:=0 to 32766 do

if max<a^[i] then

begin max:=a^[i]; vmax:=i; end;

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

for i:=1 to n do

if (vmax>=d^[i]) and (vmax<=c^[i]) then write(f,i,' ');

close(f);

End;

Begin Init; end

HCN.PAS

const fi='hcn.in1';

fo='hcn.ou1';

type mmc=array[0 101] of longint;

var f:text; n:word; a,b,qh,tr,cs:mmc;

procedure doc;

var i:word;t:longint;

begin

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

a[0]:=0;b[0]:=0;

for i:=1 to n do

begin

readln(f,a[i],b[i]);

if a[i]> b[i] then

begin t:=a[i];a[i]:=b[i];b[i]:=t; end;

end;

Trang 12

for i:=1 to n do cs[i]:=i;

end;

procedure sx;

var i,j:word; t:longint;

begin

for i:=1 to n-1 do

for j:=i+1 to n do

if a[i]>a[j] then

begin

t:=a[i];a[i]:=a[j];a[j]:=t;

t:=b[i];b[i]:=b[j];b[j]:=t;

t:=cs[i];cs[i]:=cs[j];cs[j]:=t;

end;

end;

procedure xl;

var i,j:word;

begin

sx; fillchar(qh,sizeof(qh),0);

for i:=1 to n do

for j:=0 to i-1 do

if (a[i]>a[j]) and (b[i]<b[j]) then

if qh[i]<qh[j]+1 then

begin qh[i]:=qh[j]+1; tr[i]:=j; end;

end;

procedure xuat;

var i,max,vt:word;

begin

assign(f,fo);rewrite(f); max:=qh[1]; vt:=1;

for i:=1 to n do

if max<qh[i] then begin max:=qh[i]; vt:=i;end;

i:=vt; writeln(f,max+1);

while i<>0 do

begin writeln(f,a[i],' ',b[i]); i:=tr[i]; end;

close(f);

end;

begin doc; xl; xuat; end

III/ Mét sè test gîi ý.

SAPDAY.PAS

10

6 9 8 7 1 2 3 4 5 10 1 2 3 4 5 6 7 8 9 10

3

4

4 6 400000 3 3 4 6 400000

3

400000 300000

200000

200000 300000 400000

Trang 13

6

1 6

2 5

3 4

4 5

3 7

6 7

5

1 2 3 4 5

5

1 32766

3 5

7 9

11 15

17 21

2

1 2

5

1 2

2 3

3 4

4 5

5 6

2

1 2

HCN.PAS

10

21 1

4 7

6 5

2 4

3 5

6 8

7 6

10 20

12 19

13 17

4

13 17

12 19

10 20

1 21

5

4 6

7 4

3 5

7 3

2 1

2

4 6

3 7

1

3 4 13 4

6

1 20

2 19

3 18

4 17

5 16

6 15

6

6 15

5 16

4 17

3 18

2 19

1 20

Trang 14

1 4

2 5

3 6

4 7

1 4

4

1 30000

2 29000

3 28000

30000 30000

3

3 28000

2 29000

1 30000

Giám khảo lu ý khi sử dụng các test để chấm bài:

+ Tổng số lợng hình chữ nhật của học sinh bắt buộc phải giống đáp án.

+ Chỉ số của các hình chữ nhật có thể có nhiều cách khác nhau.

Ngày đăng: 17/08/2017, 14:13

TỪ KHÓA LIÊN QUAN

w