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

De DT HSG Tin 12 bang B nam hoc 20102011

8 9 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 8
Dung lượng 15,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

Chữ số thứ I đợc gắn một số nguyên dơng aI đợc gọi là trọng lợng của nã thø tù c¸c ch÷ sè trong phÇn ®Çu cña m· tÝnh tõ tr¸i qua ph¶i.. Ngêi ta lÊy lÇn lît c¸c ch÷ sè trong m· nh©n víi t[r]

Trang 1

SỞ GD&ĐT NGHỆ AN

(Đề thi cú 03 trang)

KỲ THI CHỌN HỌC SINH GIỎI CẤP TỈNH LỚP 12

NĂM HỌC 2010 – 2011

Mụn thi: TIN HỌC LỚP 12 THPT - BẢNG B

Thời gian làm bài: 180 phỳt

B i 1 ài 1 : (5.5 điểm) tần số

Cho dẫy số nguyên dơng, số lần xuất hiện của một số đợc gọi tần số của số nguyên đó Hãy tìm số nguyên dơng có tần số cao nhất và tần số tơng ứng của nó

Dữ liệu vào: Cho từ file văn bản MAX.INP bao gồm:

 Dòng đầu tiên chứa một số nguyên N( 1≤ N ≤ 10000) là số lợng các số nguyên trong dãy

 Mỗi dòng trong N dòng tiếp theo chứa số nguyên M( 1≤ M ≤ 1000) trong dãy

Kết quả: Ghi ra file văn bản MAX.OUT, gồm 2 số nguyên viết trên một dòng,

số thứ nhất ghi số nguyên có tần số cao nhất, số thứ 2 là tần số của nó( trong tr ờng hợp có nhiều số nguyên có tần số cao nhất bằng nhau, hãy đa ra số nguyên nhỏ nhất

và tần số của nó) Hai số cách nhau một ký tự trắng

9

1

2

5

6

3

7

2

5

2

2 4 6 7 7 2 4

2 2

Bài 2: (5.5 điểm) Mã Số

Để tiện trong công tác quản lý, một công ty đã gắn mã số cho các nhân viên của mình Mã số của mỗi nhân viên bao gồm bảy chữ số( gọi là phần đầu của mã nhân viên) và một chữ cái in hoa nối phía sau Chữ cái này đợc tính toán từ bảy chữ

số phần đầu của mã theo các bớc nh sau:

1 Chữ số thứ I đợc gắn một số nguyên dơng aI đợc gọi là trọng lợng của nó( thứ tự các chữ số trong phần đầu của mã tính từ trái qua phải) Ngời ta lấy lần

l-ợt các chữ số trong mã nhân với trọng lợng tơng ứng của nó

2.Cộng tất cả các kết quả

3 Tìm số d của phép chia tổng trên cho số nguyên dơng K ( 1≤ K ≤ 11)

4 Mỗi số d tơng ứng với một chữ cái in hoa Chữ cái in hoa tơng ứng tìm đợc

là chữ cái nối phía sau của mã nhân viên

Cho trớc phần đầu của mã nhân viên, hãy tìm chữ cái in hoa nối phía sau

Dữ liệu vào: Từ file văn bản MASO.INP có cấu trúc nh sau:

 Dòng đầu tiên ghi số nguyên dơng K

 Dòng thứ 2 ghi một xâu gồm 7 chữ số là phần đầu của mã nhân viên

 Dòng thứ 3 ghi 7 số nguyên dơng, số thứ I là trọng lợng của chữ số thứ I trong phần đầu của mã Các số cách nhau một ký tự trắng

 Dòng cuối cùng ghi một xâu có độ dài Kgồm các chữ cái tiếng Anh in hoa, chữ cái thứ I tơng ứng với số I-1 là số d của phép chia của tổng tìm đợc cho K

Kết quả: Ghi ra file văn bản MASO.OUT, chứa chữ cái tìm đợc.

Ví dụ:

Đề chớnh thức

Trang 2

11 6830907

2 7 6 5 4 3 2 JABCDEFGHIZ

D

Bài 3: (4.5 điểm) Sa mạc

Sa mạc là lới ô vuông cấp MxN ( 1≤ N,M ≤ 100) Trên mỗi ô của lới ngời ta ghi một số nguyên a( 1≤ a ≤ 100) đợc gọi là năng lợng của ô đó Một con lạc đà

đang ở ô (i,j) của lới chỉ đợc đi đến một trong hai ô (i+1,j) hoặc ô (i,j+1) Lạc đà đi

đến ô nào thì hấp thụ đợc nguồn năng lợng tại ô đó Hãy tìm cho lạc đà một đờng đi

từ ô (1,1) đến ô (M,N) theo nguyên tắc trên và hấp thụ đợc nhiều năng lợng nhất

Dữ liệu vào: Từ file văn bản SAMAC.INP, dòng đầu tiên thi 2 số nguyên

d-ơng theo thứ tự M, N

Dòng thứ I trong M dòng tiếp theo ghi N số nguyên dơng, số thứ J là năng l-ợng trên ô (I , J) của sa mạc.( số thứ tự của các số trên một dòng tính từ trái qua phải)

Kết quả: Ghi ra file văn bản SAMAC.OUT, dòng đầu tiên ghi số S là năng

l-ợng mà lạc đà hấp thụ đợc Từ dòng thứ 2 trở đi mỗi dòng ghi 2 số nguyên dơng là toạ độ các ô theo thứ tự trên đờng đi của lạc đà

Ví dụ:

4 5

1 5 1 3 4

6 7 9 1 5

1 1 8 4 1

1 3 4 3 3

41

1 1

2 1

2 2

2 3

3 3

3 4

4 4

4 5 Cả hai file dữ liệu, các số trên một dòng cách nhau một ký tự trắng

Bài 4: (4.5 điểm) Hội trại

Nhân dịp ngày thành lập công ty, ban Giám đốc công ty X tổ chức cho cán

bộ công nhân viên một cuộc hội trại Thời điểm tính trong ngày hội trại là phút, thời

điểm ban đầu là 0 Công ty có N cán bộ công nhân viên Ngời thứ I có mặt tại hội trại từ thời điểm aI đến thời điểm bI Hãy lập trình giải quyết các công việc sau đây:

1 Tìm cho ban Giám đốc một thời điểm sớm nhất đến thăm hội trại để gặp đợc nhiều cán bộ nhất

2 Tìm một khoảng thời gian dài nhất tại địa điểm hội trại không có ai cả, nếu

có nhiều khoảng thời gian nh thế hãy đa ra khoảng thời gian sớm nhất

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

 Dòng đầu tiên ghi số N là số cán bộ của công ty ( ( 1≤ N ≤ 10000)

 Dòng thứ I trong N dòng tiếp theo ghi 2 số nguyên dơng aI và bI là khoảng

thời gian có mặt tại hội trại của cán bộ thứ I

Kết quả: Ghi ra file văn bản HOITRAI.OUT nh sau:

 Dòng đầu tiên ghi số T là thời điểm ban Giám đốc đến thăm hội trại

 Dòng thứ 2 ghi 2 số nguyên a, b là khoảng thời gian từ a đến b không có ai ở hội trại Nếu không tìm đợc ghi số 32675 hai lần

Cả hai file dữ liệu, các số trên một dòng cách nhau một ký tự trắng

Ví dụ:

7

1 320

400 1000

351 1200

623

321 350

Trang 3

380 1336

452 1430

512 1230

623 1105

Hết

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

………

Chú ý: - Chơng trình giải các bai1, bài 2, bài 3, bài 4 lần lợt ghi lên đĩa với các tên Bai1.pas; Bai2.pas; Bai3.pas; Bai4.pas.

Trang 4

Bài 1:

const fi='Max.inp';

fo='max.out';

var a:array[1 1000] of integer; n,m,i,d,so:integer;

f:text;

begin

assign(f,fi);

reset(f);

readln(f,n);

d:=0;

so:=0;

for i:=1 to n do

begin

readln(f,m);

inc(a[m]);

end;

for i:=1 to m do

if a[i]>d then

begin

d:=a[i];

so:=i;

end;

close(f);

assign(f,fo);

rewrite(f);

writeln(f,so,' ',d);

close(f);

end

B i 2: ài 2:

const fi='MASO.INP';

fo='MASO.out';

var

t: array[1 7] of byte;

d: array[0 10] of char;

k: integer;

f: text;

s,s1: string;

tong,i,c,n,du: integer;

procedure doc;

begin

assign(f,fi);

reset(f);

readln(f,k);

readln(f,s);

for i:=1 to 7 do

read(f,t[i]);

Trang 5

readln(f);

for i:=0 to k-1 do

read(f,d[i]);

close(f);

end;

function kq: char;

begin

tong:=0;

for i:=1 to length(s) do

begin

s1:=s[i];

val(s1,n,c);

tong:=tong+n*t[i];

end;

du:=tong mod k;

kq:=d[du];

end;

begin

doc;

assign(f,fo);

assign(f,fo);

rewrite(f);

write(f,kq);

close(f);

end

Bài 3:

program SA_mac;

const

f1 ='samac.inp';

fo ='samac.out';

var

a : array[1 100,1 100] of integer;

b : array[0 100,0 100] of longint; m,n,i,j : integer;

f : text;

{==============================}

procedure khoi_tao;

begin

assign(f,f1);

reset(f);

readln(f,m,n);

for i:=1 to m do

begin

for j:=1 to n do

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

readln(f);

end;

close(f);

Trang 6

fillchar(b,sizeof(b),0);

end;

{=============================}

procedure xu_ly;

begin

for i:=1 to m do

for j:=1 to n do

if b[i,j-1]>b[i-1,j] then

b[i,j]:=a[i,j]+b[i,j-1]

else

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

end;

{==============================}

procedure thong_bao;

var

dd : array[1 2,1 199] of integer;

k : integer;

begin

assign(f,fo);

rewrite(f);

writeln(f,b[m,n]);

i:=m;

j:=n;

k:=m+n-1;

while (i>=1) and(j>=1) do

begin

dd[1,k]:=i;dd[2,k]:=j;

dec(k);

if b[i,j-1]>b[i-1,j] then

j:=j-1

else

i:=i-1;

end;

for i:=1 to m+n-1 do

writeln(f,dd[1,i],' ',dd[2,i]);

close(f);

end;

{======= chuong trinh chinh =============} BEGIN

khoi_tao;

xu_ly;

thong_bao;

END

Bài 4:

program hoi_trai;

const

f1 = 'hoitrai.inp';

fo = 'hoitrai.out';

Trang 7

a : array[0 1439] of integer; max_cuoi,n : integer;

max_dau,t_diem : integer;

f : text;

{===================================}

procedure khoi_tao;

var

i,j,t1,t2 : integer;

begin

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

assign(f,f1);

reset(f);

readln(f,n);

for i:=1 to n do

begin

readln(f,t1,t2);

for j:=t1 to T2 do

inc(a[j]);

end;

close(f);

end;

{=====================================}

procedure cau1;

var

i,max : integer;

begin

max:= a[0];

t_diem:=0;

for i:=1 to 1439 do

if a[i]>max then

begin

max:=a[i];

t_diem:=i;

end;

end;

{======================================} procedure cau2;

var

i,j,dem,dau,cuoi: integer;

begin

i:=1;

max_dau:=32675;

max_cuoi:=32675;

while i<=1439 do

if a[i]<>0 then

inc(i)

else

begin

Trang 8

dau:=i;

j:=i;

while (a[j]=0) and (j<=1439) do

inc(j);

if j-i>max_cuoi-max_dau then

begin

max_cuoi:=j-1;

max_dau:=i;

end;

i:=j;

end;

writeln('dau =',max_dau,' cuoi= ',max_cuoi);readln; end;

{====================================}

procedure thong_bao;

begin

assign(f,fo);

rewrite(f);

writeln(f,t_diem);

writeln(f,max_dau,' ',max_cuoi);

close(f);

end;

{=========== CHUONG TRINH CHINH==========}

BEGIN

khoi_tao;

cau1;

cau2;

thong_bao;

END

Ngày đăng: 15/06/2021, 04:42

w