Tải bản đầy đủ (.doc) (10 trang)

Đề và đáp án môn Tin tỉnh Thanh Hoá kỳ thi chọn đội tuyển HSG thi Quốc Gia

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (124.6 KB, 10 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO
THANH HOÁ

KỲ THI CHỌN ĐỘI TUYỂN DỰ THI HSGQG LỚP 12 THPT
NĂM HỌC 2013 – 2014
MÔN THI: TIN HỌC
Ngày thi: 09 – 10 – 2013
Thời gian 180 phút, không kể thời gian giao đề
(Đề gồm 3 câu, 2 trang)

ĐỀ CHÍNH THỨC
SBD: ………………
Tổng quan bài thi:
Câu

Tên bài

Tên file nguồn

Tên file input

Tên file output

Điểm

OGA.PAS

OGA.INP

OGA.OUT


6

1

Ổ GÀ

2

BIẾN ĐỔI

BIENDOI.PAS

BIENDOI.INP

BIENDOI.OUT

7

3

CHỖ NGỒI

CHONGOI.PAS

CHONGOI.INP

CHONGOI.OUT

7


Hãy lập trình giải các bài toán sau:
Câu 1. Ổ GÀ
Sau một thời gian dài, con đường XYZ đã có dấu hiệu xuống cấp. Nhận được nhiều
lời phàn nàn của người tham gia giao thông, nhà quản lý tiến hành kiểm tra chất lượng con
đường trước khi đưa ra quyết định về việc xây đường mới.
Con đường có độ dài n mét và được chia thành n phần bằng nhau liên tiếp (mỗi phần
dài 1 mét), đánh số từ 1 đến n. Người ta đã tính toán độ cao trung bình của mỗi phần.
Cụ thể, phần thứ i sẽ có độ cao trung bình là Ai.
Kích thước của ổ gà lớn nhất là một trong những yếu tố quan trọng ảnh hưởng đến
chất lượng của con đường. Một ổ gà là một đoạn liên tiếp các phần đường từ u đến v thỏa
mãn các tính chất sau:
 v≥2+u (đoạn đường dài ít nhất 3 mét).
 Tồn tại m (u Giá trị v-u+1 được gọi là kích thước của ổ gà.
Ví dụ: Trên con đường có độ dài 5 mét với độ cao trung bình của mỗi phần lần lượt
là (1, 3, 2, 4, 5), đoạn đường từ phần đường thứ 2 đến phần đường thứ 5 là ổ gà lớn nhất có
kích thước bằng 4.
Yêu cầu: Tìm kích thước của ổ gà lớn nhất.
Dữ liệu: Vào từ file văn bản OGA.INP gồm:
- Dòng đầu: Ghi số nguyên n (1 ≤ n ≤ 105).
- n dòng tiếp theo: Mỗi dòng ghi một số nguyên Ai (0 ≤ Ai ≤ 109).
Trang 1/ 10


Kết quả: Ghi ra file văn bản OGA.OUT một số nguyên duy nhất là kích thước lớn nhất của
một ổ gà trên đường. Nếu không tìm được ổ gà nào, ghi ra 0.
Ví dụ:
OGA.INP
5


OGA.OUT
4

1
3
2
4
5
Câu 2. BIẾN ĐỔI
Cho m máy biến đổi số được đánh số từ 1 đến m và một số nguyên dương n. Hoạt
động của máy thứ i được xác định bởi cặp số nguyên dương (a i,bi) (1≤ ai,bi≤ n). Máy nhận
đầu vào là số nguyên dương ai và trả lại ở đầu ra số nguyên dương bi.
Ta nói một số nguyên dương x có thể biến đổi thành số nguyên dương y nếu
x = y hoặc tồn tại một dãy hữu hạn các số nguyên dương x = p 1, p2, ..., pk = y sao cho với hai
phần tử liên tiếp pi, pi+1 bất kì trong dãy, luôn tìm được một trong số các máy đã cho để biến
đổi pi thành pi+1.
Yêu cầu: Cho trước số nguyên dương t (t ≤ n), hãy bổ sung thêm một số ít nhất các máy
biến đổi số để bất kỳ số nguyên dương nào từ 1 đến n sđều có thể biến đổi thành t.
Dữ liệu: Vào từ file văn bản BIENDOI.INP gồm:
- Dòng đầu tiên chứa 3 số nguyên n, m, t (1≤n,m,t≤104).
- m dòng tiếp theo, mỗi dòng chứa một cặp số tương ứng với một máy biến đổi số.
(Các số trên các dòng được ghi cách nhau bởi một dấu cách)
Kết quả: Ghi ra file văn bản BIENDOI.OUT một số duy nhất là số máy biến đổi cần bổ sung.
Ví dụ:
BIENDOI.INP BIENDOI.OUT
645
1
13
23
45

65
Câu 3. CHỖ NGỒI
Trang 2/ 10


Để chuẩn bị cho Word Cup, Việt Nam đã xây dựng một sân vận động lớn nhất thế giới.
Chỗ ngồi của khán giả được chia thành nhiều sectors giống nhau, mỗi sectors gồm nhiều hàng
ghế, mỗi hàng ghế có N ghế đánh số từ 1 đến N từ trái qua phải và khán giả có thể đi vào chỗ
ngồi của mình từ cả 2 phía của hàng ghế. Hướng dẫn viên có nhiệm vụ chỉ cho khán giả vào
chỗ ngồi từ đầu này hay đầu kia để họ không phải đi qua người đã ngồi trên hàng đó. Mỗi
người sẽ đi vào chỗ ngồi của mình sau khi người đến trước (nếu có) đã ngồi vào chỗ của họ.
Tất cả các ghế của hàng đã được bán hết, nhưng không thể biết được khán giả đã đến
sân theo trình tự nào. Mỗi cách bố trí N người vào hàng N ghế được xem là một tình huống tốt.
Yêu cầu: Cho số nguyên dương N là số lượng ghế ngồi của hàng, hãy xác định số tình
huống tốt có thể và đưa ra kết quả theo modul (109+7).
Dữ liệu: Vào từ file CHONGOI.INP chứa số nguyên dương N (N≤1018).
Kết quả: Đưa ra file văn bản CHONGOI.OUT là kết quả tìm được.
Lưu ý: Người đầu tiên có thể vào chỗ ngồi của mình theo cả 2 phía, nhưng ta chỉ tính 2 cách đó là 1.

Ví dụ:
CHONGOI.INP
3

CHONGOI.OUT
4

Giải thích: N=3 có 4 cách là:
Cách 1: Khán giả đầu ngồi ghế 1, hai khán giả còn lại đi vào ghế ngồi từ bên phải
Cách 2: Khán giả đầu ngồi ghế 3, hai khán giả còn lại đi vào ghế ngồi từ bên trái
Cách 3: Khán giả đầu ngồi ghế 2, khán giả hai đi vào ghế ngồi từ bên trái, khán giả ba đi vào

ghế ngồi từ bên phải.
Cách 4: Khán giả đầu ngồi ghế 2, khán giả hai đi vào ghế ngồi từ bên phải, khán giả ba đi vào
ghế ngồi từ bên trái.

------------------- Hết -------------------

Trang 3/ 10


const
tfi
tfo
Nmax

=
=
=

'oga.inp';
'oga.out';
100001;

arr1

=

array[0..Nmax] of longint ;

type
var

fi,fo
:
text;
n,m,res
:
longint;
a,f,g
:
arr1 ;
procedure Nhap;
var
i,j :longint;
begin
read(fi,n) ;
for i := 1 to n do read(fi,a[i]) ;
end;
procedure init;
var
i,j,k: longint;
begin
f[1] := 1;
for i := 2 to n do if a[i] < a[i-1] then
f[i] := f[i-1] + 1 else f[i] := 1;
g[n] := 1;
for i := n -1 downto 1 do if a[i] < a[i+1] then
g[i] := g[i+1] + 1 else g[i] := 1;
end;
procedure xuly;
var
i,j,k: longint;

begin
res:= 0;
for i := 2 to n - 1 do
if (f[i] > 1) and (g[i] > 1) and (res < f[i] + g[i] - 1)
then res := f[i] + g[i] - 1 ;
end ;
procedure inkq;
begin
write(fo,res);
end;
begin
assign(fi,tfi);reset(fi);
assign(fo,tfo);rewrite(fo);
Nhap;
init;
xuly;
inkq;
close(fi);
close(fo) ;
end.

Trang 4/ 10


uses math;
const
fi='biendoi.inp';
fo='biendoi.out';
nmax
=

10100;
var
n,m,top,dem,sl,Start,res:longint;
ke,head,next,st,low,num,lab,degout:array[0..nmax] of longint;
free:array[0..nmax] of boolean;
procedure DFS(u:longint);
var i,v,x:longint;
begin
inc(top);st[top]:=u;
inc(dem);num[u]:=dem;low[u]:=num[u];
i:=head[u];
while i<>0 do
begin
v:=ke[i];
if free[v] then
begin
if num[v]=0 then
begin
dFS(v);
low[u]:=min(low[u],low[v]);
end
else low[u]:=min(low[u],num[v]);
end;
i:=next[i];
end;
if low[u]=num[u] then
begin
inc(sl);
repeat
x:=st[top];dec(top);

free[x]:=false;lab[x]:=sl;
until x=u;
end;
end;
procedure progress;
var i,j,u,v:longint;
begin
read(n,m,Start);
for i:=1 to m do
begin
read(u,v);
next[i]:=head[u];head[u]:=i;ke[i]:=v;
end;
for i:=1 to n do free[i]:=true;
for i:=1 to n do if free[i] then DFS(i);
for u:=1 to n do
begin
i:=head[u];
while i<>0 do
begin
v:=ke[i];
if lab[u]<>lab[v] then
inc(degout[lab[u]]);
i:=next[i];
end;
end;
for i:=1 to sl do if (lab[Start]<>i)and(degout[i]=0) then inc(res);
writeln(res);
end;


Trang 5/ 10


BEGIN
assign(input,fi);reset(input);
assign(output,fo);rewrite(output);
progress;
close(input);
close(output);
END.

Trang 6/ 10


const fi='chongoi.INP';
fo='chongoi.OUT';
maxn=1000000007;
var
n:int64;
procedure
docfile;
begin
assign(input,fi);
reset(input);
readln(n);
assign(output,fo);
rewrite(output);
end;
procedure
dongfile;

begin
close(input); close(output);
end;
function power(n:int64):int64;
var a:int64;
begin
if n=0 then exit(1);
a:=power(n div 2);
a:=(a*a) mod maxn;
if n mod 2=1 then a:=(2*a) mod maxn;
exit(a);
end;
BEGIN
docfile;
writeln(power(n-1));
dongfile;
END.

Trang 7/ 10


Trang 8/ 10


Trang 9/ 10


,,,

Trang 10/ 10




×