S GD&ĐT NINH BÌNHĐ THI CH N H C SINH GI I L P 12 THPT
K thi th nh t - Năm h c 2012 – 2013
MÔN: TIN H C
Ngày thi: 09/10/2012
(Th i gian làm bài:180 phút )
Đ thi g m 04 câu, trong 02 trang
T ng quan đ thi:
Câu Tên file bài làm Tên file Input Tên file Otput Th i gian ch y
1 NUMBER.PAS NUMBER.INP NUMBER.OUT 1 giây/test
2GOMBI.PAS GOMBI.INP GOMBI.OUT 1 giây/test
3 TRIANGLE.PAS TRIANGLE.INP TRIANGLE.OUT 2 giây/test
4 PASCAL.PAS PASCAL.INP PASCAL.OUT 1 giây/test
Ghi chú: Thí sinh ph i đt tên file bài làm, file Input, file Output theo quy đnh nh trên. ư
Câu 1: Ch s th N.
Khi vi t các s t nhiên tăng d n t 1, 2, 3,… liên ti p nhau, ta nh n đc m t dãy các ch sế ế ượ
th p phân vô h n, đo n đu tiên c a dãy s là: 1234567891011121314151617181920...
Yêu c u: Hãy tìm ch s th N c a dãy s vô h n trên.
D li u: Cho trong file NUMBER.INP g m m t nguyên d ng N (N < 10 ươ 6).
K t qu :ế Ghi k t qu ra file NUMBER.OUT.ế
Ví d :
NUMBER.OUT NUMBER.OUT Gi i thích k t qu ế
21 5 Ch s th 21 trong dãy là ch s 5
Câu 2: Gom bi.
Có N cái h p đánh s t 1 t i N và N viên bi cũng đánh s t 1 t i N. Ban đu bi s i đt trong
h p đánh s i (i = 1..N). V i m t c p s nguyên (u, v) cho tr c, b n ph i th c hi n thao tác ướ
chuy n t t c các bi cùng h p v i bi có s u vào h p ch a bi s v.
Yêu c u: Cho s N và danh sách M thao tác c n ph i th c hi n. Hãy xác đnh s l ng bi l n nh t ượ
trong m t h p sau khi đã th c hi n đ M thao tác chuy n bi.
D li u: Cho trong file GOMBI.INP
Dòng 1 là hai s N, M (2 N 500; 1 M 1000).
M dòng ti p theo, m i dòng ch a hai s nguyên u v th hi n m t thao tác c n th c hi nế
K t qu :ế Ghi ra file GOMBI.OUT m t s nguyên là s l ng bi trong h p có nhi u bi nh t sau khi ượ
th c hi n các thao tác.
Ví d :
GOMBI.INP GOMBI.OUT Gi i thích: Các h p có bi sau m i l n
chuy n.
7 4
1 3
2 6
1 6
1 2
4 Ban đu: (1) (2) (3) (4) (5) (6) (7)
Chuy n 1 3: (2) (1 3) (4) (5) (6) (7)
Chuy n 2 6: (1 3) (4) (5) (2 6) (7)
Chuy n 1 6: (4) (5) (1 2 3 6) (7)
Chuy n 1 2: (4) (5) (1 2 3 6) (7)
Câu 3: Tam giác cân.
Cho h tr c t a đ Oxy, trên đó có đánh d u n đi m (3 n 1500). Đi m th i có t a đ ( xi,
yi) (i = 1 ÷ n), các t a đ là s nguyên có giá tr tuy t đi không v t quá 10 ượ 9.
Đ THI CHÍNH TH C
Yêu c u: Xác đnh s tam giác cân có ba đnh là ba đi m trong s n đi m đã cho.
D li u : Cho trong file TRIANGLE.INP:
Dòng đu tiên ch a s nguyên n.
Dòng th i trong n dòng sau ch a 2 s nguyên xi và yi.
K t quế : Ghi ra file TRIANGLE.OUT s tam giác cân tìm đc. ượ
Ví d:
TRIANGLE.INP TRIANGLE.OUT
4
0 0
1 1
1 0
0 1
4
Chú ý: Trong 60% s test có n < 200.
Câu 3(6 đi m): Tam giác PASCAL.
Tam giác Pascal là m t cách s p x p các h s khi khai tri n nh th c Newton vào m t hình có ế
d ng tam giác theo t ng hàng, các hàng đc đánh s b t đu t 0, hàng th n (n 0) c a tam giác ượ
bao g m các h s trong khai tri n c a (x + y) n vi t l n l t t trái sang ph i.ế ượ
Dòng 0: (x + y)0 = 1
Dòng 1: (x + y)1 = 1.x + 1.y
Dòng 2: (x + y)2 = 1.x2 + 2.xy + 1.y2
Dòng 3: (x + y)3 = 1.x3 + 3.x2y + 3.xy2 + 1.y3
D i đây các hàng t 0 đn 16 c a Tam giác Pascal:ướ ế
Yêu c u: Cho s t nhiên n. Hãy tính s l ng s h ng là s l ượ trên dòng th n c a tam giác
Pascal.
D li u: Cho trong file PASCAL.INP c u trúc nh sau: dòng đu là s nguyên k < 10 là s l ng ư ượ
s n, k dòng ti p theo m i dòng ghi m t s n (1< n < 2.10 ế 9)
K t qu :ế Ghi ra file PASCAL.OUT k dòng, m i dòng m t s nguyên là k t qu bài toán t ng ng ế ươ
v i m t s n trong file d li u theo đúng th t .
Ví d :
PASCAL.INP PASCAL.OUT
3
3
8
11
4
2
8
Chú ý: Trong 40 % s test có n < 30; trong 70% s test có n < 5000.
-----------------------------H t--------------------------ế
H và tên thí sinh :....................................................... ……………..S báo danh .............................
H và tên, ch ký: Giám th 1:......................................................................................................
Giám th 2:.......................................................................................................
H NG D N CH M ƯỚ THI CH N H C SINH GI I L P 12 THPT
K thi th nh t - Năm h c 2012 – 2013
MÔN: TIN H C
Ch m b ng ch ng trình t đng AMM2: ươ
Câu 1: 10 test, m i test đúng cho 0,5 đi m.
Câu2: 10 test, m i test đúng cho 0,5 đi m.
Câu3: 10 test đu, m i test đúng cho 0,3 đi m. 10 test sau, m i test đúng cho 0,2 đi m.
Câu 4: 10 test, m i test đúng cho 0,5 đi m.
Bài 1:
Const fi ='number.inp';
fo ='number.out';
cs:array[1..8] of longint = (9, 180, 2700, 36000, 450000, 5400000, 63000000, 720000000);
Var n : longint;
f,g :text;
Function num(n:longint):char;
var k, so, mu : longint;
s : string;
Begin
k:=1; mu:=1;
while (k<9)and(cs[k]<n) do
begin
n:=n-cs[k];
inc(k); mu:=mu*10;
end;
if mu=1 then so:=n div k
else so:=n div k+mu+ord(n mod k>0)-1;
str(so,s);s:=s[k]+s;
num:=s[n mod k+1];
End;
BEGIN
assign(f,fi); reset(f);
assign(g,fo); rewrite(g);
while not seekeof(f) do
begin
readln(f,n);
writeln(g,num(n));
end;
close(f);
close(g);
END.
Bài 2:
const fi = 'Gombi.Inp';
fo = 'Gombi.Out';
nmax =10000;
var cha,u,v:array[1..nmax]of longint;
n,m:longint;
procedure nhap;
var f:text;
i:longint;
begin
assign(f,fi);
reset(f);
readln(f,n,m);
for i:=1 to m do
readln(f,u[i],v[i]);
close(f);
for i:=1 to n do cha[i]:=-1;
end;
procedure Join(u,v:longint);
begin
While cha[u]>0 do u:=cha[u];
While cha[v]>0 do v:=cha[v];
if u = v then exit;
if cha[u]<cha[v] then
begin
cha[u]:=cha[u]+cha[v];
cha[v]:=u;
end
else
begin
cha[v]:=cha[v]+cha[u];
cha[u]:=v;
end;
end;
procedure xuly;
var i,j,max:longint;
f:text;
begin
for i:=1 to m do Join(u[i],v[i]);
max:=0;
for i:=1 to n do if cha[i]<max then max:=cha[i];
assign(f,fo);
rewrite(f);
write(f,-max);
close(f);
end;
begin
nhap;
xuly;
end.
Bài 3:
const fi='Triangle.inp';
fo='Triangle.out';
max=1500;
type td=record
x,y:int64;
end;
mang=array[1..max+1] of extended;
var f,g:text;
a:array[1..max+1] of td;
kc:mang;