You are on page 1of 165

100 Ton Tin

Tin hc & Nh trng

H Ni - 2002
100 Problems & Solutions Page 2

Phn 1: BI

Bi 1/1999 - Tr chi cng nhau qua cu


(Dnh cho hc sinh Tiu hc)
Bn ngi cn i qua mt chic cu. Do cu yu nn mi ln i khng qu hai ngi,
v v tri ti nn phi cm n mi i c. Bn ngi i nhanh chm khc nhau, qua
cu vi thi gian tng ng l 10 pht, 5 pht, 2 pht v 1 pht. V ch c mt chic n
nn mi ln qua cu phi c ngi mang n tr v cho nhng ngi k tip. Khi hai
ngi i cng nhau th qua cu vi thi gian ca ngi i chm hn. V d sau y l
mt cch i:
- Ngi 10 pht i vi ngi 5 pht qua cu, mt 10 pht.
- Ngi 5 pht cm n quay v, mt 5 pht.
- Ngi 5 pht i vi ngi 2 pht qua cu, mt 5 pht.
- Ngi 2 pht cm n quay v, mt 2 pht.
- Ngi 2 pht i vi ngi 1 pht qua cu, mt 2 pht.
Thi gian tng cng l 10+5+5+2+2 = 24 pht.
Em hy tm cch i khc vi tng thi gian cng t cng tt, v nu di 19 pht th tht
tuyt vi! Li gii ghi trong tp vn bn c tn l P1.DOC

Bi 2/1999 - T chc tham quan


(Dnh cho hc sinh THCS)
Trong t t chc i tham quan danh lam thng cnh ca thnh ph H Ch Minh, Ban
t chc hi thi Tin hc tr t chc cho N on ( nh t s 1 n N) mi on i thm
quan mt a im khc nhau. on th i i thm a im cch Khch sn Hong
di km (i=1,2,...., N). Hi thi c M xe taxi nh s t 1 n M (MN) phc v vic
a cc on i thm quan. Xe th j c mc tiu th xng l vj n v th tch/km.
Yu cu: Hy chn N xe phc v vic a cc on i thm quan, mi xe ch phc
v mt on, sao cho tng chi ph xng cn s dng l t nht.
D liu: File vn bn P2.INP:
- Dng u tin cha hai s nguyn dng N, M (NM200);
- Dng th hai cha cc s nguyn dng d1, d2, ..., dN;
- Dng th ba cha cc s nguyn dng v1, v2, ..., vM.
- Cc s trn cng mt dng c ghi khc nhau bi du trng.
Kt qu: Ghi ra file vn bn P2.OUT:
- Dng u tin cha tng lng xng du cn dng cho vic a cc on i thm quan
(khng tnh lt v);
- Dng th i trong s N dng tip theo ghi ch s xe phc v on i (i=1, 2, ..., N).

V d:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 3

P2.INP P2.OUT
34 256
759 2
17 13 15 10 3
4

Bi 3/1999 - Mng t bo
(Dnh cho hc sinh THPT)
Mng t bo c dng mt li vung hnh ch nht. Ti mi nhp thi gian: mi ca
li cha tn hiu l 0 hoc 1 v c th truyn tn hiu trong n cho mt s k cnh
theo mt qui lut cho trc. gc trn bn tri c th nhn tn hiu t bn ngoi a
vo. Sau nhp thi gian , tn hiu mt s l 0 nu tt c cc tn hiu truyn n n
l 0, cn trong trng hp ngc li tn hiu trong n s l 1. Mt khng nhn c
tn hiu no t cc k cnh vi n s gi nguyn tn hiu ang c trong n. Ring i
vi trn tri, sau khi truyn tn hiu cha trong n i, nu c tn hiu vo th trn tri
s ch nhn tn hiu ny, cn nu khng c tn hiu no th trn tri cng hot ng
ging nh cc khc. trng thi u tn hiu trong tt c cc l 0.
Yu cu: Cho trc s nhp thi gian T v dy tn hiu vo S l mt dy gm T k hiu
S1, ..., ST, trong Si l 0 hoc 1 th hin c tn hiu vo, ngc li Si l X th hin
khng c tn hiu vo ti nhp thi gian th i (1 i T), hy xc nh trng thi ca li
sau nhp thi gian th T.
D liu: vo t file vn bn P3.INP:
- Dng u tin cha 3 s nguyn M, N, T theo th t l s dng, s ct ca li v s
nhp thi gian (1<M, N 200; T 100);
- Dng th hai cha xu tn hiu vo S;
- M dng tip theo m t qui lut truyn tin. Dng th i trong s M dng ny cha N s
ai1, ai2, ..., aiN, trong gi tr ca aij s l 1, 2, 3, 4, 5, 6, 7, 8 tng ng ln lt nu
(i, j) phi truyn tin cho k cnh bn tri, bn phi, bn trn, bn di, bn trn v bn
di, bn tri v bn phi, bn trn v bn tri, bn di v bn phi (xem hnh v); cn
nu (i, j) khng phi truyn tn hiu th aij = 0.

1 2 3 4 5 6 7 8

Kt qu: Ghi ra file vn bn P3.OUT gm M dng, mi dng l mt xu gm N k t 0


hoc 1 m t trng thi ca li sau nhp thi gian th T.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 4

V d:
P3.INP P3.OUT
225 11
101XX 01
24
21

Qu trnh bin i trng thi c din t trong hnh di y:

0 0 1 0 0 1 1 0 1 1 1 1
0 0 0 0 0 0 0 1 1 0 0 1

Bi 4/1999 - Tr chi bc si
(Dnh cho hc sinh Tiu hc)
Trn mt t c mt ng si c 101 vin. Hai em hc sinh Hong v Huy chi tr chi
nh sau: Mi em n lt i phi bc ra t ng si trn ti thiu l 1 vin v ti a l 4
vin. Ngi thua l ngi phi bc vin si cui cng. Gi s Hong l ngi c bc
trc, Huy bc sau. Cc em th ngh xem ai l ngi thng cuc, Hong hay Huy? V
ngi thng cuc phi suy ngh g v thc hin cc bc i ca mnh ra sao?

Bi 5/1999 - 12 vin bi
(Dnh cho hc sinh THCS)
C 12 hn bi ging ht nhau v kch thc, hnh dng v khi lng. Tuy nhin trong
chng li c ng mt hn bi km cht lng: hoc nh hn hoc nng hn bnh
thng. Dng mt cn bn hai bn, bn hy dng 3 ln cn tm ra c vin bi .
Cn ch r rng vin bi l nng hn hay nh hn.
Vit chng trnh m phng vic t chc cn cc hn bi trn. D liu v hn bi km
cht lng do ngi s dng chng trnh nm gi. Yu cu trnh by chng trnh p
v m thut.

Bi 6/1999 - Giao im cc ng thng


(Dnh cho hc sinh THPT)
Trn mt phng cho trc n ng thng. Hy tnh s giao im ca cc ng thng
ny. Yu cu tnh cng chnh xc cng tt.
Cc ng thng trn mt phng c cho bi 3 s thc A, B, C vi phng trnh Ax +
By + C = 0, y cc s A, B khng ng thi bng 0.
D liu vo ca bi ton cho trong tp B6.INP c dng sau:
- Dng u tin ghi s n
- n dng tip theo, mi dng ghi 3 s thc A, B, C cch nhau bi du cch.
Kt qu ca bi ton th hin trn mn hnh.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 5

Bi 7/1999 - Min mt phng chia bi cc ng thng


(Dnh cho hc sinh THPT)
Xt bi ton tng t nh bi 6/1999 nhng yu cu tnh s min mt phng c chia
bi n ng thng ny:
Trn mt phng cho trc n ng thng. Hy tnh s min mt phng c chia bi
cc ng thng ny. Yu cu tnh cng chnh xc cng tt.
Cc ng thng trn mt phng c cho bi 3 s thc A, B, C vi phng trnh Ax +
By + C = 0, y cc s A, B khng ng thi bng 0.
D liu vo ca bi ton cho trong tp B7.INP c dng sau:
- Dng u tin ghi s n
- n dng tip theo, mi dng ghi 3 s thc A, B, C cch nhau bi du cch.
Kt qu ca bi ton th hin trn mn hnh.

Bi 8/1999 - Cn to
(Dnh cho hc sinh Tiu hc)
M i ch v mua cho Nga 27 qu to ging ht nhau v kch thc v khi lng. Tuy
nhin ngi bn hng ni rng trong s cc qu to trn c ng mt qu c khi lng
nh hn. Em hy dng mt chic cn bn hai bn tm ra qu to nh . Yu cu s
ln cn l nh nht.
Cc em hy gip bn Nga tm ra qu to nh i. Nu cc em tm ra qu to sau t
hn 5 ln cn th l tt lm ri.

Bi 9/1999 - Bc dim
(Dnh cho hc sinh Tiu hc)
Trn bn c 3 dy que dim, s lng que dim ca cc dy ny ln lt l 3, 5 v 8.
Hai bn Nga v An chi tr chi sau: Mi bn n lt mnh c quyn (v phi) bc
mt s que dim bt k t mt dy trn. Ngi thng l ngi bc c que dim cui
cng.
Ai l ngi thng cuc trong tr chi trn? V bn phi bc dim nh th no? Cc
bn hy cng suy ngh vi Nga v An nh.

Bi 10/1999 - Dy s nguyn
(Dnh cho hc sinh THCS)
Dy cc s t nhin c vit ra thnh mt dy v hn trn ng thng:
1234567891011121314..... (1)
Hi s v tr th 1000 trong dy trn l s no?
Em hy lm bi ny theo hai cch: Cch 1 dng suy lun logic v cch 2 vit chng
trnh tnh ton v so snh hai kt qu vi nhau.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 6

Tng qut bi ton trn: Chng trnh yu cu nhp s K t bn phm v in ra trn mn


hnh kt qu l s nm v tr th K trong dy (1) trn. Yu cu chng trnh chy cng
nhanh cng tt.

Bi 11/1999 - Dy s Fibonaci
(Dnh cho hc sinh THCS)
Nh cc bn bit dy s Fibonaci l dy 1, 1, 2, 3, 5, 8, .... Dy ny cho bi cng
thc qui sau:
F1 = 1, F2 =1, Fn = Fn-1 + Fn-2 vi n > 2
1. Chng minh khng nh sau:
Mi s t nhin N u c th biu din duy nht di dng tng ca mt s s trong
dy s Fibonaci.
N = akFk + ak-1Fk-1 + .... a1F1
Vi biu din nh trn ta ni N c biu din Fibonaci l akak-1...a2a1.
2. Cho trc s t nhin N, hy tm biu din Fibonaci ca s N.
Input:
Tp vn bn P11.INP bao gm nhiu dng. Mi dng ghi mt s t nhin.
Output:
Tp P11.OUT ghi kt qu ca chng trnh: trn mi dng ghi li biu din Fibonaci
ca cc s t nhin tng ng trong tp P11.INP.

Bi 12/1999 - N-mino
(Dnh cho hc sinh THPT)
N-mino l hnh thu c t N hnh vung 11 ghp li (cnh k cnh). Hai n-mino
c gi l ng nht nu chng c th t chng kht ln nhau.
Bn hy lp chng trnh tnh v v ra tt c cc N-mino trn mn hnh. S n nhp t
bn phm.
V d: Vi N=3 ch c hai loi N-mino sau y:

3-mino thng 3-mino hnh thc th

Ch : Gi Mn l s cc n-mino khc nhau th ta c M 1=1, M2=1, M3=2, M4=5, M5=12,


M6=35,...
Yu cu bi gii ng v trnh by p.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 7

Bi 13/1999 - Phn hoch hnh ch nht


(Dnh cho hc sinh THPT)
Mt hnh vung c th chia thnh nhiu hnh ch nht c cc cnh song song vi cnh
hnh vung (xem Hnh v). Xy dng cu trc d liu v lp chng trnh m t php
chia . Tnh xem c bao nhiu cch chia nh vy.
Input
D liu nhp vo t tp P13.INP bao gm hai s t nhin l
n, m - kch thc hnh ch nht.
Output
D liu ra nm trong tp P13.OUT c dng sau:
- Dng u tin ghi s K l tng s cc php phn hoch.
- Tip theo l K nhm, mi nhm cch nhau bng mt dng
trng.
- Mi nhm d liu bao gm cc cp ta ca cc hnh ch nht nm trong phn
hoch.

Bi 14/2000 - Tm s trang sch ca mt quyn sch


(Dnh cho hc sinh Tiu hc)
nh s cc trang sch ca 1 quyn sch cn tt c 1392 ch s. Hi quyn sch c
tt c bao nhiu trang?

Bi 15/2000 - Hi ngh i vin


(Dnh cho hc sinh Tiu hc)
Trong mt hi ngh lin chi i c mt s bn nam v n. Bit rng mi bn trai u
quen vi N cc bn gi v mi bn gi u quen vi ng N bn trai. Hy lp lun
chng t rng trong hi ngh s cc bn trai v cc bn gi l nh nhau.

Bi 16/2000 - Chia s
(Dnh cho hc sinh THCS)
Bn hy chia N2 s 1, 2, 3, ...., N2-1, N2 thnh N nhm sao cho mi nhm c s cc s
hng nh nhau v c tng cc s ny cng bng nhau.

Bi 17/2000 - S nguyn t tng ng


(Dnh cho hc sinh THCS)
Hai s t nhin c gi l Nguyn t tng ng nu chng c chung cc c s
nguyn t. V d cc s 75 v 15 l nguyn t tng ng v cng c cc c nguyn
t l 3 v 5. Cho trc hai s t nhin N, M. Hy vit chng trnh kim tra xem cc s
ny c l nguyn t tng ng vi nhau hay khng.

Bi 18/2000 - Sn b
(Dnh cho hc sinh THCS v THPT)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 8

Trn li vung mt con sn xut pht t nh (0,0) cn phi i n im kt thc ti


(N,0) (N l s t nhin cho trc).
Qui tc i: Mi bc (x1, y1) --> (x2, y2) tho mn iu kin (sn b):
- x2 x1+1,
- y1 -1 <= y2 <= y1+1
Tm mt cch i sao cho trong qu trnh i n c th ln cao nht trn trc tung (tc l
ta y t cc i). Ch cn a ra mt nghim.
Input
S N c nhp t bn phm.
Output
Output ra file P5.OUT c dng:
- Dng u tin ghi 2 s: m, h. Trong m l s cc bc i ca con sn n c v
tr ch, h ghi li cao cc i t c ca con sn.
- m dng tip theo, mi dng ghi ra ln lt cc ta (x,y) l cc bc i ca sn trn
li.
Yu cu k thut
Cc bn c th m t cc bc i ca con sn trn mn hnh ha. t c mc
ch s N cn c chn khng vt qu 50. Mc d khng yu cu nhng nhng
li gii c m phng ha s c im cao hn nu khng m phng ha.

Bi 19/2000 - a gic
(Dnh cho hc sinh THPT)
Hy tm iu kin cn v N s thc dng a1, a2, ..., aN to thnh cc cnh lin
tip ca mt a gic N cnh trn mt phng. Gi s cho trc N s a1, a2, ..., aN
tha mn iu kin l cc cnh ca a gic, bn hy lp chng trnh biu din v
v a gic trn.
Input
Input ca bi ton l tp P6.INP bao gm 2 dng, dng u tin ghi s N, dng th hai
ghi N s thc cch nhau bi du cch.
Output
u ra ca bi ton th hin trn mn hnh.
Ch : Phn l thuyt ca bi ton cn c chng minh mt cch cht ch.

Bi 20/2000 - Bn Lan cn h s my?


(Dnh cho hc sinh Tiu hc)
Nh Lan trong mt ngi nh 8 tng, mi tng c 8 cn h. Mt hm, cc bn trong lp
hi Lan:
"Nh bn cn h s my?".

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 9

"Cc bn hy th hi mt s cu, mnh s tr li tt c cu hi ca cc bn, nhng


ch ni "ng" hoc "khng" thi. Qua cc cu hi cc bn th on xem mnh cn
h s bao nhiu"- Lan tr li.
Bn Huy ni:
"Mnh s hi, c phi bn cn h s 1, s 2,..., s 63 khng. Nh vy vi nhiu
nht 63 cu hi mnh s bit c bn cn h no."
Bn Nam ni:
"Cn mnh ch cn n 14 cu, 7 cu bit bn tng my v 7 cu c th bit
chnh xc bn cn h s my ".
Cn em, em phi hi nhiu nht my ln bit c bn Lan cn h s bao nhiu?

Bi 21/2000 - Nhng trang sch b ri


(Dnh cho hc sinh Tiu hc)
Mt cun sch b ri mt mt mng. Trang b ri th nht c s 387, cn trang cui
cng gm 3 ch s 3, 8, 7 nhng c vit theo mt th t khc.
Hi c bao nhiu trang sch b ri ra?

Bi 22/2000 - m ng i
(Dnh cho hc sinh THCS)
Cho hnh sau:
a) Bn hy m tt c cc ng i t A n B. Mi ng i ch c i qua mi nh
nhiu nht l 1 ln.
b) Bn hy tm tt c cc ng i t A n D, sao cho ng i qua mi cnh ng
mt ln.
c) Bn hy tm tt c cc ng i qua tt cc cc cnh ca hnh, mi cnh ng mt
ln, sao cho:
- im bt u v im kt thc trng nhau.
- im bt u v im kt thc khng trng nhau

Bi 23/2000 - Quay Rubic


(Dnh cho hc sinh THPT)
Rubic l mt khi lp phng gm 333 = 27 khi lp phng con. Mi mt rubic
gm 33 = 9 mt ca mt lp 9 khi lp phng con. trng thi ban u, mi mt
rubic c t mt mu. Cc mt khc nhau c t cc mu khc nhau. Gi s ta ang
nhn vo mt mt trc ca rubic. C th k hiu mu cc mt nh sau: F: mu mt
trc l mt ta ang nhn; U: mu mt trn; R: mu mt phi; B: mu mt sau; L: mu
mt bn tri; D: mu mt di.
Mt lp gm 33 khi lp phng con c th quay 90 nhiu ln, trc quay i qua
tm v vung gc vi mt ang xt. Kt qu sau khi quay l khi lp phng 333 vi
cc mu mt b i khc.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 10

Mt xu vng quay lin tip rubic c th m t bng xu cc ch ci ca U, R, F, D, B,


L, trong mi ch ci l k hiu mt vng quay c s: quay mt tng ng 90 theo
chiu kim ng h. Hy vit chng trnh gii 3 bi ton di y:
1. Cho 2 xu INPUT khc nhau, kim tra xem liu nu p dng vi trng thi u c
cho cng mt kt qu hay khng?
2. Cho mt xu vo, hy xc nh s ln cn p dng xu vo cho trng thi u
rubic li nhn c trng thi u .

Bi 24/2000 - Sp xp dy s
(Dnh cho hc sinh Tiu hc)
Cho dy s: 3, 1, 7, 9, 5
Cho php 3 ln i ch, mi, ln c i ch hai s bt k. Em hy sp xp li dy s
trn theo th t tng dn.

Bi 25/2000 - Xy dng s
(Dnh cho hc sinh THCS)
Cho cc s sau: 1, 2, 3, 5, 7
Ch dng php ton cng hy dng dy trn to ra s: 43, 52.
V d to s 130 bn c th lm nh sau: 123 + 7 = 130.

Bi 26/2000 - T mu
(Dnh cho hc sinh THCS)
Cho li vung 4x4, cn phi t mu cc ca li. c php dng 3 mu: Xanh,
, vng. iu kin t mu l ba bt k lin nhau theo chiu dc v ngang phi
khc mu nhau. Hi c bao nhiu cch nh vy, hy lit k tt c cc cch.

Bi 27/2000 - Bn c
(Dnh cho hc sinh THPT)
Cho mt bn c vung 8x8, trn cho trc mt s qun c. V d hnh v sau l mt
bn c nh vy:







D liu nhp c ghi trn tp BANCO.TXT bao gm 8 dng, mi dng l mt su nh


phn c di bng 8. V tr cc qun c ng vi s 1, cc trng ng vi s 0. V d
tp BANCO.TXT ng vi bn c trn:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 11

01010100
10011001
10100011
00010100
00100000
01010001
10011000
01000110
Hy vit chng trnh tnh s qun c lin tc ln nht nm trn mt ng thng trn
bn c. ng thng y c th l ng thng ng. ng nm ngang hoc ng
cho. Kt qu th hin trn mn hnh.
Vi v d nu trn, chng trnh phi in trn mn hnh kt qu l 4.

Bi 28/2000 - i tin
(Dnh cho hc sinh Tiu hc)
Gi s bn c nhiu t tin loi 1, 2 v 3 ngn ng. Hi vi cc t tin bn c bao
nhiu cch i t 10 ngn ng? Hy lit k cc cch i.

Bi 29/2000 - Chn bn
(Dnh cho hc sinh THCS)
Trong mt tri h ngi ta tnh c chn ra mt nhm 6 hc sinh. Chng minh rng s
tm c 3 trong s 6 bn sao cho 3 bn ny hoc quen nhau (i mt) t trc
hoc cha h quen nhau. Em hy ch ra cch tm 3 bn .

Bi 30/2000 - Phn t yn nga


(Dnh cho hc sinh THCS)
Cho bng A kch thc MxN. Phn t Aij c gi l phn t yn nga nu n l phn
t nh nht trong hng ca n ng thi l phn t ln nht trong ct ca n. V d
trong bng s sau y:
15 3 9
55 4 6
76 1 2
th phn t A22 chnh l phn t yn nga.
Bn hy lp chng trnh nhp t bn phm mt bng s kch thc MxN v kim tra
xem n c phn t yn nga hay khng?

Bi 31/2000 - Biu din phn s


(Dnh cho hc sinh PTTH)
Mt phn s lun lun c th c vit di s thp phn hu hn hoc v hn tun
hon. V d:
23/5 = 4.6
3/8 = 0.375

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 12

1/3 = 0.(3)
45/56 = 0.803(571428)
....
Trong cc v d trn th cc ch s t trong du ngoc ch phn tun hon ca s thp
phn.
Nhim v ca bn l vit mt chng trnh nhp t s (N) v nhp mu s (D), sau
a ra kt qu l dng thp phn ca phn s N/D.
V d chy chng trnh:
Nhap N, D:1 7
1/7 = 0.(142857)_

Bi 32/2000 - Bi ton 8 hu
(Dnh cho hc sinh Tiu hc)
Trn bn c vua hy sp xp ng 8 qun Hu sao cho khng cn con no c th n
c con no. Hy tm ra nhiu cch sp nht?

Bi 33/2000 - M ho vn bn
(Dnh cho hc sinh THCS)
Bi ton sau m t mt thut ton m ho n gin ( tin ta ly v d ting Anh, cc
bn c th m rng cho ting Vit):
Tp hp cc ch ci ting Anh bao gm 26 ch ci c nh s th t t 0 n 25 nh
sau:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
a b c d e f g h i j k l m n o p q r s t u v w x y Z

Quy tc m ho mt k t nh sau (ly v d k t X):


- Tm s th t tng ng ca k t ta c 23
- Tng gi tr s ny ln 5 ta c 28
- Tm s d trong php chia s ny cho 26 ta c 2
- Tra ngc bng ch ci ta thu c C.
a. S dng quy tc trn m ho cc dng ch sau:
PEACE
HEAL THE WORLD
I LOVE SPRING
b. Hy tm ra quy tc gii m cc dng ch sau:
N FR F XYZIJSY
NSKTVRFYNHX
MFSTN SFYNTSFQ ZSNBJVXNYD

Bi 34/2000 - M ho v gii m
(Dnh cho hc sinh THCS)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 13

Theo quy tc m ho bi trn (33/2000), hy vit chng trnh cho php:


- Nhp mt xu k t v in ra xu k t c m ha
- Nhp mt xu k t c m ho v in ra su k t c gii m.
V d khi chy chng trnh:
Nhap xau ky tu:
PEACE
Xau ky tu tren duoc ma hoa la:
UJFHJ
Nhap xau ky tu can giai ma:
FR
Xau ky tu tren duoc giai ma la:
AM_

Bi 35/2000 - Cc phn s c sp xp
(Dnh cho hc sinh THPT)
Xt tp F(N) tt c cc s hu t trong on [0,1] vi mu s khng vt qu N.
V d tp F(5):
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
Hy vit chng trnh cho php nhp s nguyn N nm trong khong t 1 n 100 v
xut ra theo th t tng dn cc phn s trong tp F(N) cng s lng cc phn s .
V d khi chy chng trnh:
Nhap so N: 5
0/1 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1/1
Tat ca co 11 phan so_

Bi 36/2000 - Anh chng h tin


(Dnh cho hc sinh Tiu hc)
Mt chng h tin ra hiu may qun o. Ngi ch hiu bit tnh khch nn ni vi anh
ta: Ti tnh tin cng theo 2 cch: cch th nht l ly ng 11700 ng. Cch th hai
l ly theo tin cc: chic cc th nht ti ly 1 ng, chic cc th 2 ti ly 2 ng gp
i chic th nht, chic cc th 3 ti ly 4 ng gp i ln chic cc th 2 v c tip
tc nh th cho n ht. o ca anh c 18 chic cc. Nu anh thy cch th nht l t
th anh c th tr ti theo cch th hai.
Sau mt hi suy ngh chng h tin quyt nh chn theo cch th hai. Hi anh ta phi
tr bao nhiu tin v anh ta c b h hay khng?

Bi 37/2000 - S siu nguyn t


(Dnh cho hc sinh THCS)
S siu nguyn t l s nguyn t m khi b mt s tu cc ch s bn phi ca n
th phn cn li vn to thnh mt s nguyn t.
V d 7331 l mt s siu nguyn t c 4 ch s v 733, 73, 7 cng l cc s nguyn t.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 14

Nhim v ca bn l vit chng trnh nhp d liu vo l mt s nguyn N (0< N <10)


v a ra kt qu l mt s siu nguyn t c N ch s cng s lng ca chng.
V d khi chy chng trnh:
Nhap so N: 4
Cac so sieu nguyen to c 4 chu so la: 2333 2339 2393 2399 2939 3119 3137
3733 3739 3793 3797 5939 7193 7331 7333 7393
Tat ca co 16 so_

Bi 38/2000 - Tam gic s


(Dnh cho hc sinh THPT)
Hnh sau m t mt tam gic s c s hng 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 gic bng mt ng gp khc, mi bc ch c i t


s hng trn xung mt trong hai s ng k bn phi hay bn tri hng di, v
cng cc s trn ng i li ta c mt tng.
V d: ng i 7 8 1 4 6 c tng l S=26, ng i 7 3 1 7 5 c tng l S=23
Trong hnh trn, tng Smax=30 theo ng i 7 3 8 7 5 l tng ln nht trong tt c cc
tng.
Nhim v ca bn v vit chng trnh nhn d liu vo l mt tam gic s cha trong
text file INPUT.TXT v a ra kt qu l gi tr ca tng Smax trn mn hnh.
File INPUT.TXT c dng nh sau:
Dng th 1: c duy nht 1 s N l s hng ca tam gic s (0<N<100).
N dng tip theo, t dng th 2 n dng th N+1: dng th i c (i-1) s cch nhau bi
du trng (space).
V d: vi ni dung ca file INPUT.TXT l
5
7
38
810
2744
45265
th kt qu chy chng trnh s l: Smax=30.

Bi 39/2000 - ch
(Dnh cho hc sinh THCS v THPT)
Tr chi ch thng dng 30 nm trc ca tr em gm mt khung ch kch thc
5x5 cha 24 hnh vng nh kch thc nh nhau. Trn mt mi hnh vung nh c in

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 15

mt ch ci trong bng ch ci. V ch c 24 hnh vung trong ch nn trong ch


cn tha ra mt trng, c kch thc ng bng kch thc cc hnh vung. Mt hnh
vung c th y trt vo trng nu n nm ngay st bn tri, bn phi, bn trn
hay bn di trng. Mc tiu ca tr chi l trt cc hnh vung vo trng sao cho
cui cng cc ch ci trong ch c xp theo ng th t ca chng trong bng ch
ci. Hnh sau y minh ho mt ch vi cu hnh ban u v cu hnh ca n sau 6
nc i sau:
1.Trt hnh vung pha trn trng.
2.Trt hnh vung bn phi trng.
3.Trt hnh vung bn phi trng.
4.Trt hnh vung pha di trng.
5.Trt hnh vung pha di trng.
6.Trt hnh vung bn tri trng.

T R G S J TT RR GG SS JJ
X D O K I XX OO KK LL II
M V L N MM DD VV BB NN
W P A B E WW PP AA EE
U Q H C F UU QQ HH CC FF

Cu hnh ban u ca ch Cu hnh ca ch sau 6

Bn hy vit mt chng trnh ca bn cha cu hnh ban u ca ch cng cc nc


i v ra ch kt qu.
Input
u vo ca chng trnh ca bn cha cu hnh ban u ca mt ch v mt dy cc
nc i trong ch .
Nm dng u tin m t cu hnh ban u ca ch, mi dng tng ng vi mt
hng ca ch v cha ng 5 k t tng ng vi 5 hnh vung ca ch trn hng
. trng c din t bng mt du cch.
Cc dng tip theo sau l dy cc nc i. Dy cc nc i c ghi bng dy cc ch
A,B,R v L th hin hnh vung no c trt vo trng. A th hin hnh vung
pha trn trng c trt vo trng, tng ng: B-pha di, R-bn phi, L-bn
tri. C th c nhng nc i khng hp cch, ngay c khi n c biu th bng nhng
ch ci trn. Nu xut hin mt nc i khng hp cch th ch coi nh khng c cu
hnh kt qu. Dy cc nc i c th chim mt s dng, nhng n s c xem l kt
thc ngay khi gp mt s 0.
Out put
Nu ch khng c cu hnh kt qu th thng bo 'This puzzle has no final
configuration.'; ngc li th hin th cu hnh ch kt qu. nh dng mi dng kt
qu bng cch t mt du cch vo gia hai k t k tip nhau. trng cng c s

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 16

l nh vy. V d nu trng nm bn trong hng th n c xut hin di dng 3


du cch: mt ngn cch n vi k t bn tri, mt th hin chnh trng , cn
mt ngn cch n vi k t bn phi.
Ch : Input mu u tin tng ng vi ch c minh ho trong v d trn.
Sample Input 1
TRGSJ
XDOKI
M VLN
WPABE
UQHCF
ARRBBL0
Sample Output 1
T R GSJ
X OKLI
MDVBN
WP AE
UQHC F
Sample Input 2
AB C DE
FGHIJ
KLMNO
PQRS
TUVWX
AAA
LLLL0
Sample Output 2
ABCD
FGHIE
KLMNJ
PQRSO
TUVWX
Sample Input 3
ABCDE
FGHIJ
KLMNO
PQRS
TUVWX
AAAAABBRRRLL0
Sample Output 3
This puzzle has no final configuration.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 17

Bi 40/2000 - My nh v Radio
Mt con tu c trang b ng-ten nh hng c th xc nh v tr hin thi ca mnh
nh cc ln c n hiu a phng. Mi n hiu c t mt v tr bit v pht
ra mt tn hiu n nht. Mi khi bt c tn hiu, tu lin quay ng-ten ca mnh cho
n khi t c tn hiu cc i. iu cho php xc nh c phng v tng i
ca n hiu. Cho bit d liu ca ln c trc (thi gian, phng v tng i, v tr
ca n), mt ln c mi xc nh v tr hin thi ca tu. Bn phi vit mt
chng trnh xc nh v tr hin thi ca tu t hai ln c n hiu.
V tr ca cc n hiu v cc con tu c cho trong h to vung gc, trc Ox
hng v pha ng, cn Oy hng v pha bc. Hng i ca con tu c o bng ,
theo chiu kim ng h tnh t hng bc. Nh vy, hng bc s l 00, hng ng l
900, hng nam l 1800 v hng ty l 2700. Phng v tng i ca n hiu cng
c o bng , tng i vi hng i ca tu v theo chiu kim ng h. ng ten
khng th ch ra n hiu nm hng no trn phng v. Nh vy, mt phng v 90 0
c ngha l n hiu c th nm hng 900 hoc 2700.
Input
Dng u tin ca input l mt s nguyn ch s lng cc n hiu (nhiu nht l 30).
Mi dng tip theo cho mt n hiu. Mi dng bt u bng tn n (l mt chui k t
khng vt qu 20 k t), sau l v tr ca n cho bng honh v tung . Cc
trng ny phn cch bi mt du cch.
Dng tip theo ngay sau cc d liu v n hiu l mt s nguyn ch s lng cc kch
bn ng i ca tu. Mi kch bn cha 3 dng gm mt dng cho bit hng i ca
tu so vi hng Bc v vn tc vn tc thc ca tu, v hai dng ch hai ln c n
hiu. Thi gian c o bng pht, tnh t lc na m trong vng 24 gi. Vn tc o
bng n v di (nh cc n v ca h trc to ) trn n v thi gian. Dng th
hai ca kch bn l ln c th nht gm thi gian (l mt s nguyn), tn n v gc
phng v tng i vi hng i ca tu. Ba trng c ngn cch nhau bi mt du
cch. Dng th ba ca kch bn l ln c th hai. Thi gian ca ln c ny lun ln
hn ln c th nht.
Output
Vi mi kch bn, chng trnh ca bn phi ch ra c s th t ca kch bn
(Scenario 1, Scenario 2,...), v mt thng bo v v tr ca con tu (c lm trn n
hai ch s thp phn) ti thi im ca ln c th hai. Nu v tr ca tu khng th xc
nh th thng bo: Position cannot be determined.
Mu input v output chnh xc tng ng c cho nh sau:
Sample Input
4
First 2.0 4.0
Second 6.0 2.0
Third 6.0 7.0
Fourth 10.0 5.0
2

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 18

0.0 1.0
1 First 270.0
2 Fourth 90.0
116.5651 2.2361
4 Third 126.8699
5 First 319.3987
Sample Output
Scenario 1: Position cannot be determined
Scenario 2: Position is (6.00, 5.00)

Bi 41/2000 - C Othello
(Dnh cho hc sinh THCS v THPT)
C Othello l tr chi cho 2 ngi trn mt bn c kch thc 8x8 , dng nhng qun
trn mt mt en, mt mt trng. Cc u th s c ln lt i mt qun vo cn
trng trn bn c. Khi i mt qun, u th phi lt c t nht mt qun ca u th
kia. Cc qun s lt c nu chng nm lin tip trn cng mt ng thng (ngang,
dc hoc cho) m hai u ca ng l hai qun c mu ca u th ang i. Khi
xong mt lt i, tt c cc qun b lt c i sang mu ca u th va i.
Trong mt lt i c th lt c nhiu hng.
V d: Nu th c hin thi bn c bn tri v lt i l ca u th trng, th anh ta
c th i c mt trong cc nc sau: (3,5) (4,6) (5,3) (6,4). Nu anh ta i nc (3,5)
th sau nc i th c s nh bn c bn phi.
V bn c
Bn hy vit mt chng trnh c mt vn c t mt text file c qui cch:
8 dng u tin l bn c th, mi dng cha 8 k t, mi k t c th l:
'-' th hin mt trng,
'B' th hin mt c qun en,
'W' th hin mt c qun trng.
Dng th 9 cha mt trong hai k t 'B' hoc 'W' ch nc i thuc v u th no.
Cc dng tip theo l cc lnh. Mi lnh c th l: lit k tt c cc nc i c th ca
u th hin thi, thc hin mt nc i, hay thi chi vn c . Mi lnh ghi trn mt
dng theo qui cch sau:
Lit k tt c cc nc i c th ca u th hin thi:
Lnh l mt ch 'L' ct u tin ca dng. Chng trnh phi kim tra c bn c v in
ra tt c cc nc i hp l ca u th hin thi theo dng (x,y) trong x l hng v y
l ct ca nc i. Cc nc i ny phi c in theo qui cch:
+ Mi nc i trn hng i s c in trc mi nc i trn hng j nu j>i.
+ Nu trn hng i c nhiu hn 1 nc i th cc nc i c in theo th t ca ct.
Mi nc i hp l phi in trn mt dng. Nu khng c nc i no hp l v u th
hin thi khng th lt bt c mt qun no th phi in ra thng bo 'No legal move'.
Thc hin mt nc i

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 19

Lnh l mt ch 'M' ct u tin ca dng, tip theo sau l 2 ch s ct th hai v


th ba ca dng. Cc ch s ch ra hng v ct ca trng trn bn c ni u th hin
thi s t qun ca mnh, tr phi anh ta khng c nc i hp l no. Nu u th hin
thi khng c nc i hp l no th anh ta c thay bi u th kia v by gi nc
i l ca u th mi. Chng trnh phi kim tra khi nc i l hp l. Bn s phi
ghi nhn s thay i trn bn c, k c vic thm cc qun mi ln vic thay i mu
sc qun c b lt. Cui mi nc i hy in ra s lng tt c cc qun c mi mu trn
bn c theo qui cch 'Black - xx White - yy, trong xx l s lng cc qun en cn
yy l s lng cc qun trng. Sau mt nc i, u th hin thi c thay bi u th
kia.
Thi chi vn c
Lnh l mt ch 'Q' ct u tin ca dng, dng lnh ny kt thc Input cho vn c
ang xt. Chng trnh phi in th c cui cng ca vn c theo qui cch c dng
input.
Bn phi kim tra tnh chnh xc ca cc lnh. Khng c dng trng bt c ni
no trong output.

Bi 42/2000 - Mt cht v t duy s hc


(Dnh cho hc sinh Tiu hc)
Tm s t nhin nh nht khi chia cho 2, 3, 4, 5, 6, 7, 8, 9, 10 cho phn d tng ng l
1, 2, 3, 4, 5, 6, 7, 8, 9.

Bi 43/2000 - Kim gi v pht gp nhau bao nhiu ln trong ngy


(Dnh cho hc sinh Tiu hc)
ng h qu lc c 2 kim: gi v pht. Tnh xem trong vng 1 ngy m (t 0h - 24h)
c bao nhiu ln 2 kim gp nhau v l nhng lc no.

Bi 44/2000 - To ma trn s
(Dnh cho hc sinh THCS)
Cho trc s nguyn dng N bt k. Hy vit thut ton v chng trnh to lp
bng NxN phn t nguyn dng theo quy lut c cho trong v d sau:
123456
2 4 6 8 10 12
3 6 9 12 2 4
4 8 12 2 4 6
5 10 2 4 6 8
6 12 4 6 8 10
Thc hin chng trnh trn my vi N=12, a ra mn hnh ma trn kt qu (c
dng nh trong v d).

Bi 45/2000 - Cc vng trn Olimpic


(Dnh cho hc sinh THPT)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 20

C 5 vng trn Olimpic chia mt phng thnh 15 phn (khng k phn v hn) (hnh
v). Hy t vo mi phn mt s sao cho tng s cc s trong mi vng trn bng
39.
Lp chng trnh gii quyt bi ton trn v cho bit c bao nhiu cch xp nh vy.

Bi 46/2000 - o ch ci
(Dnh cho hc sinh THCS v THPT)
Bn phi vit chng trnh a ra tt c cc t c th c pht sinh t mt tp cc ch
ci.
V d: Cho t abc, chng trnh ca bn phi a ra c cc t "abc", "acb", "bac",
"bca", "cab" v "cba" (bng cch kho st tt c cc trng hp khc nhau ca t hp ba
ch ci cho).
Input
D liu vo c cho trong tp input.txt cha mt s t. Dng u tin l mt s t
nhin cho bit s t c cho di. Mi dng tip theo cha mt t. Trong , mt t
c th cha c ch ci thng hoc hoa t A n Z. Cc ch thng v hoa c coi
nh l khc nhau. Mt ch ci no c th xut hin nhiu hn mt ln.
Output
Vi mi t cho trong file Input.txt, kt qu nhn c ra file Output.txt phi cha tt
c cc t khc nhau c sinh t cc ch ci ca t . Cc t c sinh ra t mt t
cho phi c a ra theo th t tng dn ca bng ch ci.
Sample Input
2
abc
acba
Sample Output
abc
acb
bac
bca
cab
cba
aabc
aacb
abac
abca
acab
acba
baac
baca
bcaa
caab

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 21

caba
cbaa

Bi 47/2000 - Xo s trn vng trn


(Dnh cho hc sinh THCS v PTTH)
Cc s t 1 n 2000 c xp theo th t tng dn trn mt ng trn theo chiu kim
ng h. Bt u t s 1, chuyn ng theo chiu kim ng h, c bc qua mt s li
xo i mt s. Cng vic tip din cho n khi trn vng trn cn li ng mt s.
Lp chng trnh tnh v in ra s .

Bi 48/2000 - Nhng chic gy


(Dnh cho hc sinh THCS v THPT)
George c nhng chic gy vi chiu di nh nhau v cht chng thnh nhng on c
chiu di ngu nhin cho n khi tt c cc phn tr thnh u c chiu di ti a l 50
n v. By gi anh ta mun ghp cc on li nh ban u nhng li qun mt n nh
th no v chiu di ban u ca chng l bao nhiu. Hy gip George thit k chng
trnh c tnh nh nht c th ca chiu di nhng ci gy ny. Tt c chiu di c
biu din bng n v l nhng s nguyn ln hn 0.
Input
D liu vo trong file Input.txt cha cc khi mi khi 2 dng. Dng u tin cha s
phn ca chic gy sau khi ct. Dng th 2 l chiu di ca cc phn ny cch nhau bi
mt du cch. Dng cui cng kt thc file Input l s 0.
Output
Kt qu ra trong file Output.txt cha chiu di nh nht c th ca nhng ci gy, mi
chic trong mi khi trn mt dng.
Sample Input
9
521521521
4
1234
0
Sample Output
6
5

Bi 49/2001 - Mt cht nhanh tr


(Dnh cho hc sinh Tiu hc)
S t nhin A c tnh cht l khi chia A v lp phng ca A cho mt s l bt k th
nhn c s d nh nhau. Tm tt c cc s t nhin nh vy.
Bi 50/2001 - Bi ton i mu bi
(Dnh cho hc sinh THCS v THPT)
Trn bn c N1 hn bi xanh, N2 hn bi v N3 hn bi vng. Lut chi nh sau:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 22

Nu 2 hn bi khc mu nhau chm nhau th chng s cng bin thnh mu th 3 (v d:


xanh, vng --> , ).
Tm thut ton v lp chng trnh cho bit rng c th bin tt c cc hn bi thnh
mt mu c c khng?

Bi 51/2001 - Thay th t
(Dnh cho hc sinh THCS v PTTH)
Hai file INPUT1.TXT v INPUT2.TXT c cho nh sau: File INPUT1.TXT cha
mt on vn bn bt k. File INPUT2.TXT cha khng qu 50 dng, mi dng gm
hai t: t u l t ch v t sau l t ngun. Hy tm trong file INPUT1.TXT tt c
cc t l t ch v thay th chng bng cc t ngun tng ng. Kt qu ghi vo file
KQ.OUT (s l mt on vn bn tng t nh trong file INPUT1.TXT nhng c
thay th t ch bi t ngun).
Sample INPUT
File INPUT1.TXT cha on vn bn sau:
Nam moi sap den roi, ban co zui khong?
Chuc cac ban don mot cai Tet that vui ve va hanh phuc.
Chuc ban luon hoc gioi!
File INPUT2.TXT cha cc dng sau:
ban em
zui vui
Sample OUTPUT
File KQ.OUT s cha on vn bn sau:
Nam moi sap den roi, em co vui khong?
Chuc cac em don mot cai Tet that vui ve va hanh phuc.
Chuc em luon hoc gioi!

Bi 52/2001 - Xc nh cc t gic ng h trong ma trn


(Dnh cho hc sinh THCS v THPT)
Cho ma trn vung A[i,j] (i,j = 1, 2 ... n). Cc phn t ca A c nh s t 1 n n n.
Gi S l s lng cc "t gic" c bn nh l: A[i,j]; A[i,j+1]; A[i+1,j]; A[i+1,j+1] sao
cho cc s nh ca n xp theo th t tng dn theo chiu kim ng h (tnh t mt
nh no ).
1) Lp chng trnh tnh s lng S.
2) Lp thut ton xc nh A sao cho s S l:
a. Ln nht.
b. Nh nht.
Bi 53/2001 - Lp lch thng k o
(Dnh cho hc sinh THCS v THPT)
Lch ca cc thng c biu din bng mt ma trn c s ct bng 7 v s hng nh
hn hoc bng 6.
1 2 3 4 5

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 23

6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

V d: Trong hnh v, lch ny tha mn tnh cht sau: Mi ma trn con 3 3 khng c
trng u l ma trn "k o" theo ngha: Tng cc s ca mi ng cho bng tng ca
trung bnh cng ca tt c cc ct v hng. Hy xy dng tt c cc lch thng c tnh
cht nh trn. Lp chng trnh m t tt c cc kh nng xy ra.

Bi 54/2001 - Bn hy gch s
(Dnh cho hc sinh Tiu hc v THCS)
Chng ta vit lin tip 10 s nguyn t u tin theo th t tng to thnh mt s c
nhiu ch s. Trong s ny hy gch i mt na s ch s s cn li l:
a. Nh nht
b. Ln nht
Trong tng trng hp phi nu c th thut gii (ti sao li gch nh vy)?

Bi 55/2001 - Bi ton che mt mo


(Dnh cho hc sinh THCS v THPT)
Trn bn c vung NxN ti mi c th xp hoc mt con mo con, hoc mt qun
c. Hai con mo trn bn c s nhn thy nhau nu trn ng thng ni chng theo
hng ngang, hng dc hay ng cho khng c qun c no c.
Hy tm cch xp mo v qun c nh trn sao cho s mo ln nht m khng c hai
con mo no nhn thy nhau?

Bi 56/2001 - Chia li
(Dnh cho hc sinh THPT)
Cho li M N (m, n <= 20) vung, trong mi cho trc mt s t nhin. Hy tm
cch chia li trn lm hai phn (chia theo cnh li) sao cho tr tuyt i hiu s ca
tng cc s trong mi phn c gi tr nh nht (nh hnh di y).

7
1 3 5
12 2 5
9 2 10

D liu c cho trong file LUOI.INP, c cho nh sau:


- Dng u tin gm 2 s m, n l kch thc ca li.
- m dng tip theo, mi dng gm n s cch nhau bi du cch, no khng c gi tr
c cho bng 0.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 24

D liu ra trong file LUOI.OUT miu t li sau khi chia thnh hai phn: l mt ma
trn kch thc m n gm cc s 0 v 1 (s 0 k hiu cho cc tng ng vi phn th
nht, v s 1 k hiu cho cc tng ng vi phn th hai).

Sample Input:
D liu cho sau y tng ng vi hnh trn:
56
000070
013500
0 12 2 5 0 0
0 9 2 10 0 0
000000

Sample Output:
011111
01 0111
000111
000111
000001

Bi 57/2001 - Chn s
(Dnh cho hc sinh Tiu hc v THCS )
Cho 2000 s a1, a2,..., a2000 mi s l +1 hoc -1. Hi c th hay khng t 2000 s
chn ra cc s no tng cc s c chn ra bng tng cc s cn li? Gi s cho
2001 s, liu c th c cch chn khng? Nu cch gii tng qut.

Bi 58/2001 - Tng cc s t nhin lin tip


(Dnh cho hc sinh THCS v THPT)
Cho trc s t nhin n. Lp thut ton cho bit n c th biu din thnh tng ca hai
hoc nhiu s t nhin lin tip hay khng?
Trong trng hp c, hy th hin tt c cc cch c th c.
Bi 59/2001 - m s vung
(Dnh cho hc sinh THCS v THPT)
Cho mt bng vung gm NxN im nm trn cc mt li vung. Cc im k nhau
trn mt hng hay mt ct c th c ni vi nhau bng mt on thng hoc khng
c ni. Cc on s to ra cc vung trn bng. V d vi bng sau y th n = 4
v c 3 vung:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 25

Trn mi hng c th c nhiu nht n-1 on thng nm ngang v c tt c n hng nh


vy. Tng t nh vy c tt c n-1 hng cc on thng nm dc v trn mi hng c
th c nhiu nht n on.
m t ngi ta dng hai mng nh phn: mt mng ghi cc on nm ngang kch
thc n x (n-1), v mt mng ghi cc on nm dc kch thc (n-1) xn. Trong mng,
s 1 dng m t on thng ni gia 2 im, cn s 0 miu t gia hai im khng
c on thng ni. Trong v d trn th ma trn "ngang" l:
1 0 1
1 0 0

1 1 1

1 1 0
v ma trn "dc" l:
1 1 1 0
1 1 0 1

0 1 1 0
Cho trc ma trn "ngang" v ma trn "dc", d liu nhp t cc tp vn bn c tn l
NGANG.INP v DOC.INP. Hy lp trnh m s cc vung trn bng.

Bi 60/2001 - Tm s d ca php chia


(Dnh cho hc sinh Tiu hc)
Mt s nguyn khi chia cho 1976 v 1977 u d 76. Hi s khi chia cho 39 d bao
nhiu?

Bi 61/2001 - Thut ton in s vo ma trn


(Dnh cho hc sinh THCS v THPT)
lp thut ton in cc phn t ca ma trn NN cc s 0, 1 v -1 sao cho:
a) Tng cc s ca mi hnh vung con 2x2 u bng 0.
b) Tng cc s ca ma trn trn l ln nht.

Bi 62/2001 - Chn Xu
(Dnh cho hc sinh THCS v THPT)
Cho mt xu S = 123456789 hy tm cch chn vo S cc du '+' hoc '-' thu c
s M cho trc (nu c th). S M nguyn c nhp t bn phm. Trong file Output
Chenxau.Out ghi tt c cc phng n chn (nu c) v ghi "Khong co" nu nh khng
th thu c M t cch lm trn.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 26

V d: Nhp M = 8, mt trong cc phng n l: '-1+2-3+4+5-6+7';


M = -28, mt trong cc phng n l: '-1+2-34+5';
( ra ca bn: L Nhn Tm - 12 Tin Trng THPT Lam Sn)

Bi 63/2001 - Tm s nh nht
(Dnh cho hc sinh Tiu hc)
Hy vit ra s nh nht bao gm tt c cc ch s 0, 1, 2, 3, ... 9 m n:
a. Chia ht cho 9
b. Chia ht cho 5
c. Chia ht cho 20
C gii thch cho tng trng hp?

Bi 64/2001 - i ma trn s
(Dnh cho hc sinh THCS v THPT)
Cho mng s thc vung A kch thc 2nx2n. Hy lp cc mng mi bng cch i ch
cc khi vung kch thc nxn ca A theo cc cch sau:

a. b.
Bi 65/2001 - Li vung v hn
(Dnh cho hc sinh THCS v THPT)
Cho li vung v hn v hai pha (trn v phi). Cc ca li c nh s theo
quy tc sau:
- tri di - v tr (0,0) - c nh s 0.
- Cc cn li c nh s theo nguyn tc lan to t v tr (0,0) v theo quy
tc: ti mt v tr s c in vo l s nguyn khng m nh nht cha c in trn
hng v ct cha hin thi. V d, ta c hnh dng ca mt s ca li nh sau:

3 2 1 0
2 3 0 1
1 0 3 2
0 1 2 3

Cho trc cp s t nhin M, N - kch thc li. Hy vit chng trnh m t li


trn, kt qu c ghi vo file KQ.TXT.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 27

Bi 66/2001 - Bng s 9 x 9
(Dnh cho hc sinh Tiu hcv THCS)
Hy xp cc s 1, 2, 3, ..., 81 vo bng 9 x 9 sao cho:
a) Trn mi hng cc s c xp theo th t tng dn (t tri qua phi).
b) Tng cc s ct 5 l ln nht.
Yu cu:
+ i vi cc bn hc sinh khi Tiu hc ch cn vit ra bng s tho mn tnh cht
trn.
+ Cc bn hc sinh khi THCS th phi lp trnh hin th kt qu ra mn hnh.

Bi 67/2001 - V cc php bin i "Nhn 2 tr 1"


(Dnh cho hc sinh THCS v THPT)
Cho ma trn A kch thc M x N, Aij - l cc s t nhin. Cc php bin i c th l:
- Nhn tt c cc s ca mt hng vi 2.
- Tr tt c cc s ca mt ct cho 1.
Tm thut ton sao cho sau mt s php bin i trn ma trn A tr thnh ton s 0.

Bi 68/2001 - Hnh trn v bng vung


(Dnh cho hc sinh THPT)
Mt ng trn ng knh 2n -1 n v c v gia bn c 2n 2n. Vi n = 3 c
minh ho nh di y:

Vit chng trnh xc nh s vung ca bng b ct bi hnh trn v s vung nm


hon ton trong hnh trn.
D liu vo trong file Input.txt bao gm: Mi dng l mt s nguyn dng khng ln
hn 150 - l cc gi tr ca n.
D liu ra trong file Output.txt: Vi mi gi tr vo n, kt qu ra phi tnh c s
vung b ct bi hnh trn v s vung nm hon ton trong hnh trn, mi s trn mt
dng. Mi kt qu tng ng vi mt gi tr n phi cch nhau mt dng.

Sample Input
3
4

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 28

Sample Output
20
12

28
24

Bi 69/2001 - Bi ca 36
(Dnh cho hc sinh Tiu hc)
Tm s t nhin nh nht chia ht cho 36 m trong dng vit thp phn ca n c cha
tt c cc ch s t 1 ti 9.

Bi 70/2001 - M ho theo kho


(Dnh cho hc sinh THCS v THPT)
Cho trc kho l mt hon v ca n s (1, 2, ..., n). Khi m ho mt xu k t ta
c th chia xu thnhtng nhm n k t (ring nu nhm cui cng khng n k t th
ta coa th thm cc du cch vo sau cho ) ri hon v cc k t trong tng nhm. Sau
, ghp li theo th t cc nhm ta c mt xu m ho.
Chng hn: vi kho 3241 (n=4) th ta c th m ho xu 'english' thnh 'gnlehs i'.
Hy vit chng trnh m ho mt xu k t cho trc.

Bi 71/2001 - Thc hin php nhn


(Dnh cho hc sinh THCS v THPT)
Bn hy lp chng trnh nhp 2 s nguyn dng a v b. Sau thc hin php nhn
(a x b) nh cch nhn bng tay thng thng. V d:

Bi 72/2001 - Bin i trn li s


(Dnh cho hc sinh THCS v THPT)
Trn mt li N x N cc c nh s 1 hoc -1. Li trn c bin i theo quy tc
sau: mt no c thay th bng tch ca cc s trong cc k n (k cnh). Lp
chng trnh thc hin sao cho sau mt s bc ton li cn li ch s 1.
Bi 73/2001 - Bi ton chui s

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 29

(Dnh cho hc sinh Tiu hcv THCS)


Cho mt chui s c quy lut. Bn c th tm c hai s cui ca dy khng, thay th
chng trong du hi chm (?). Bi ton khng d dng lm u, v chng c to ra
bi mt quy lut rt phc tp. Bn th sc xem?
5 8 11 14 17 23 27 32 35 41 49 52 ? ?

Bi 74/2001 - Hai hng s k o


(Dnh cho hc sinh THCS v THPT)
Hy xp 2N s t nhin 1, 2, ..., 2N thnh 2 hng s:
A1, A2 ... An
B1, B2 ... Bn
Tha mn iu kin: tng cc s theo n ct bng nhau, tng cc s theo cc hng bng
nhau.

Bi 75/2001 - Tr chi Tch - Tc vung


(Dnh cho hc sinh THCS v THPT)
Trn mt li k vung c 2 ngi chi nh sau: ngi th nht mi ln chi s nh
du x vo 1 trng. Ngi th hai c nh du 0 vo 1 trng. Ngi th nht
mun t c mc ch l nh c 4 du x to thnh 4 nh ca 1 hnh vung.
Ngi th hai c nhim v ngn cn mc ch ca ngi th nht.
Lp chng trnh tm thut ton ti u cho ngi th nht (ngi th nht c th lun
thng).
Ch : Li vung c coi l v hn v c hai pha.

Bi 76/2001 - on thng v hnh ch nht


(Dnh cho hc sinh THPT)
Hy vit mt chng trnh xc nh xem mt on thng c ct hnh ch nht hay
khng?
V d:
Cho ta im bt u v im kt thc ca ng thng: (4,9) v (11,2);
V ta nh tri trn v nh phi di ca hnh ch nht: (1,5) v (7,1);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 30

Hnh1: on thng khng ct hnh ch nht

on thng c gi l ct hnh ch nht nu on thng v hnh ch nht c t nht


mt im chung.
Ch : mc d tt c d liu vo u l s nguyn, nhng ta ca cc giao im tnh
ra cha chc l s nguyn.
Input
D liu vo trong file Input.Inp kim tra N trng hp (N <= 1000). Dng u tin ca
file d liu vo l s N. Mi dng tip theo cha mt trng hp kim tra theo
quy cch sau:
xstart ystart xend yend xleft ytop xright yboottm
trong : (xstart, ystart) l im bt u v (xend, yend) l im kt thc ca on
thng. V (xleft, ytop) l nh tri trn, (xright, ybottom) l nh phi di ca
hnh ch nht. 8 s ny c cch nhau bi mt du cch.
Output
Vi mi mt trng hp kim tra trong file Input.txt, d liu ra trong file Output.out
phi a ra mt dng gm hoc l ch ci "T" nu on thng ct hnh ch nht, hoc l
"F" nu on thng khng ct hnh ch nht.
V d
Input.Inp
1
4 9 11 2 1 5 7 1
Output.out
F

Bi 77/2001 - Xo s trn bng


(Dnh cho hc sinh Tiu hc)
Trn bng en c gio ghi ln 23 s t nhin: 1, 2, 3, ..., 23
Cc bn c php xo i 2 s bt k trn bng v thay vo mt s mi l hiu ca
chng.
1. Hi c th thc hin sau mt s bc trn bng cn li ton s 0 hay khng? Nu
c hy ch ra mt cch lm c th.
2. Bi ton cn ng khng nu thay s 23 bng 25.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 31

Bi 78/2001 - C rt v nhng ch th
(Dnh cho hc sinh Tiu hc)
Cc s mi trong hnh thoi di y biu th s lng c c rt. Ch th i t gc
di vi 14 c c rt v i ln nh trn vi 13 c c rt, ch c i theo ng cho,
i n u n ht tng s c rt trong . Hi rng ch th c th n c nhiu nht
bao nhiu c c rt?

Bi 79/2001 - V mt ma trn s
(Dnh cho hc sinh THCS)
M t thut ton, lp chng trnh xy dng ma trn A[10,10] tho mn cc tnh cht:
+ A[i,j] l cc s nguyn t 0..9 (1 <= i, j <= 10),
+ Mi s t 0..9 c gp 10 ln trong ma trn A,
+ Mi hng v mi ct ca A cha khng qu 4 s khc nhau.

Bi 80/2001 - Xp s 1 trn li
(Dnh cho hc sinh THCS)
Hy xp 16 s 1 ln ma trn 10x10 sao cho nu xo i bt k 5 hng v 5 ct th vn
cn li t nht l mt s 1. Nu thut ton v lp trnh hin th ra mn hnh kt qu ma
trn tho mn tnh cht trn.

Bi 81/2001 - Dy nghch th
(Dnh cho hc sinh THPT)
Cho dy s (a1, a2, a3, ..., an) l mt hon v bt k ca tp hp (1, 2, 3, ..., n). Dy s
(b1, b2, b3, ..., bn) gi l nghch th ca dy a nu bi l cc phn t ng trc s i
trong dy a m ln hn i.
V d:
Dy a l: 3 2 5 7 1 4 6
Dy b l: 4 1 0 2 0 1 0
a. Cho dy a, hy xy dng chng trnh tm dy b.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 32

b. Cho dy b, xy dng chng trnh tm dy a.


D liu vo trong file NGICH.INP vi ni dung:
Dng u tin l s n (1 <= n <= 10 000).
Cc dng tip theo l n s ca dy a, mi s cch nhau mt du cch,
Cc dng tip theo l n s ca dy b, mi s cch nhau bi mt du cch.
D liu ra trong file NGHICH.OUT vi ni dung:
n s u tin l kt qu ca cu a,
Tip l mt dng trng v sau l n s kt qu ca cu b (nu tm c dy a).

Bi 82/2001 - Gp g
(Dnh cho hc sinh THPT)
Trn mt li vung kch thc MN (M dng, N ct) ngi ta t k rbt. Rbt th
i c t (xi,,yi). Mi ca li c th t mt vt cn hay khng. Ti mi bc,
mi rbt ch c th di chuyn theo cc hng ln, xung, tri, phi - vo cc k cnh
khng c vt cn. k rbt s gp nhau nu chng cng ng trong mt . k rbt bt
u di chuyn ng thi v mi lt c k rbt u phi thc hin vic di chuyn (ngha
l khng cho php mt rbt dng li mt no trong khi rbt khc thc hin bc
di chuyn). Bi ton t ra l tm s bc di chuyn t nht m k rbt phi thc hin
c th gp nhau. Ch rng, ty trng thi ca li, k rbt c th khng khi no gp
c nhau.
D liu vo cho trong file vn bn MEET.INP, bao gm:
+ Dng u tin cha 3 s M,N v k (M,N<=50;k<=10)
+ k dng sau, dng th i gm 2 s xi,yi l v tr ca rbt th i.
+ M dng tip theo, mi dng ghi N s gm 0 v 1 m t trng thi dng tng ng ca
li, trong mi s m t mt vi quy c: 0 - khng c vt cn, 1 - c vt cn.
Cc s trn cng mt dng ca file d liu c ghi cch nhau t nht mt du trng.
D liu ra ghi ln file vn bn MEET.OUT: nu k rbt khng th gp nhau th ghi mt
dng gm mt k t #, tri li ghi k dng, mi dng l mt dy cc k t vit lin nhau
m t cc bc i ca rbt: U-ln trn, D-xung di, L-sang tri, R-sang phi.
V d:
MEET.INP
462
11
46
011000
000001
001001
010100
MEET.OUT
DRRR
LUUL

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 33

Bi 83/2001 - Cc ng trn ng tm
(Dnh cho hc sinh Tiu hc)
Ba ng trn ng tm, mi hnh c chia thnh 8 phn (nh hnh di).
Hy t cc s trong danh sch di y vo cc phn trong cc hnh trn sao cho: mi
ng trn gm 8 s trong tm phn c tng bng 80, mi phn ca hnh trn ngoi
gm 3 s (mi phn ca hnh trn ngoi cha c phn ca hai hnh trn trong) c tng
bng 30.
Cc s bn c s dng l:
14, 11, 10, 12, 7, 9, 9, 8, 9, 9, 11, 11, 10, 10, 10, 10, 14, 9, 7, 11, 10, 8, 12, 9.

Bi 84/2001 - Cng mt tch


(Dnh cho hc sinh THCS v THPT)
Cho n s x1, x2, ..., xn ch nhn mt trong cc gi tr -1, 0, 1. V cho mt s nguyn P.
Hy tnh s lng tt c cc cch gn gi tr khc nhau ca n s trn sao cho:
x xi j P (vi i =1..n, j =1..n, i j). Hai cch gn c gi l khc nhau nu s lng
cc s xi = 0 l khc nhau.
Input: gm 2 s n, P.
Output: s cc cch chn khc nhau.
Gii hn: 2 <= n <= 1010 ; |P| <= 1010.
( ra ca bn L Quc Vinh - Tp. H Ch Minh)

Bi 85/2001 - Bin i 0 - 1
(Dnh cho hc sinh THPT)
Cho 2 li vung A v B cng kch thc M xN, mi c ch nhn cc gi tr 0 hoc
1 (A khc B). Cc li c nh s t trn xung di, t tri qua phi bt u t 1.
Cho php thc hin php bin i sau y vi li A:
- Chn (i, j) v o gi tr ca v cc chung cnh vi n (0 thnh 1, 1 thnh 0).
Hy xc nh xem bng cch p dng dy bin i trn c th a A v B c hay
khng? Nu c hy ch ra cch s dng mt s t nht php bin i.
D liu nhp vo t file vn bn BIENDOI.INP:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 34

- Dng u tin ghi hai s M, N - kch thc li (M, N <= 100),


- M dng tip theo, mi dng mt xu N k t 0, 1 ng vi dng tng ng ca A,
- Tip theo l mt dng trng,
- M dng cui mi dng 1 xu N k t 0, 1 ng vi dng tng ng ca B.
D liu ra trong file BIENDOI.OUT:
- Dng u s nguyn k l s lng php bin i t nht cn p dng (k = 0 nu khng
bin i c)
- Dng th i trong s k dng tip theo ghi hai s nguyn xc nh cn chn thc
hin php bin i.
V d:
BIENDOI. INP
45
10000
10000
01000
01000

00000
00000
00100
00000
BIENDOI.OUT
2
21
32
( ra ca bn Nguyn Vn c - Cn Th)

Bi 86/2001 - Dy s t nhin logic


(Dnh cho hc sinh Tiu hc)
y l mt chui cc s t nhin c sp xp theo mt logic no . Hy tm con s
u tin v cui cng ca dy s thay th cho du ?
? 12 14 15 16 18 20 21 22 ?

Bi 87/2001 - Ghi s trn bng


(Dnh cho hc sinh THCS)
Trn bng ghi s 0. Mi ln c tng s vit ln bng thm 1 n v hoc tng gp
i. Hi sau t nht l bao nhiu bc s thu c s nguyn dng N?

Bi 88/2001 - V cc s c bit c 10 ch s
(Dnh cho hc sinh THCS v THPT)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 35

Lp chng trnh tnh (v ch ra) tt c cc s c 10 ch s a 0a1a2...a9 tho mn cc tnh


cht sau:
a0 bng s ch s 0 ca s trn;
a1 bng s ch s 1 ca s trn;
a2 bng s ch s 2 ca s trn;
.
a9 bng s ch s 9 ca s trn;

Bi 89/2001 - Ch s th N
(Dnh cho hc sinh THCS v THPT)
Khi vit cc s t nhin tng dn t 1, 2, 3, lin tip nhau, ta nhn c mt dy cc
ch s thp phn v hn, v d: 1234567891011121314151617181920...
Yu cu: Hy tm ch s th N ca dy s v hn trn.
D liu vo t file Number.inp gm mt s dng, mi dng ghi mt s nguyn dng
N (N<109).
Kt qu ra file Number.out, vi mi s N c c t file Number.inp, ghi trn dng
tng ng ch s th N ca dy.
V d:
Number.inp Number.out
5 5
10 1
54 3

Bi 90/2002 - Thay s trong bng 9


(Dnh cho hc sinh Tiu hc)
Cho mt bng vung gm 9 . u tin cc c in bi cc ch ci I, S, M. Bn
hy thay nhng s thch hp vo cc sao cho tng cc s trong cc in cng ch ci
ban u l bng nhau v l mt s chia ht cho 4.
Ch : cc cng ch ci phi thay bi nhng s nh nhau.

Bi 91/2002 - Cc s lp
(Dnh cho hc sinh THCS v THPT)
Cho dy s nguyn gm N phn t. Lp chng trnh in ra s c lp nhiu nht trong
dy.

Bi 92/2002 - Dy chia ht

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 36

(Dnh cho hc sinh THPT)


Xt mt dy gm N s nguyn tu . Gia cc s nguyn ta c th t cc du +
hoc - thu c cc biu thc s hc khc nhau. Ta ni dy s l chia ht cho K nu
mt trong cc biu thc thu c chia ht cho K. Hy vit chng trnh xc nh tnh
chia ht ca mt dy s cho.
D liu vo: Ly t mt file vn bn c tn l DIV.INP c cu trc nh sau:
- Dng u l hai s N v K (2 N 10 000, 2 K 100), cch nhau bi du trng.
- Cc dng tip theo l dy N s c tr tuyt i khng qu 10 000 cch nhau bi du
trng hoc du xung dng.
D liu ra: Ghi ra file vn bn DIV.OUT s 1 nu dy cho chia ht cho K v s 0
nu ngc li.
V d:
DIV.INP DIV.OUT DIV.INP DIV.OUT
4 6 0 4 7 1
1 2 3 5 1 2 3 5
( ra ca bn Trn nh Trung - Lp 11A Tin - Khi PTCT - H Vinh)

Bi 93/2002 - Tr chi bn bi
(Dnh cho hc sinh Tiu hc)
Cho bng bn bi sau:

Bn c th bn bi vo t mt trong s cc nh ngoi cng. Khi c bn vo trong,


hn bi ch c th tip tc i vo trong nh gn nht hoc ln theo nhiu nht l
mt cnh i vo nh k . Bit rng khi n hnh ch nht trong cng, hn bi
khng c ln trn mt cnh no m phi i thng vo tm.
Hy tm ng i sao cho tng s im m n i qua l ln nht v c bao nhiu ng
i c c s im .

Bi 94/2002 - Biu din tng cc s Fibonaci


(Dnh cho hc sinh THCS)
Cho s t nhin N v dy s Fibonaci: 1, 1, 2, 3, 5, 8, ....
Bn hy vit chng trnh kim tra xem N c th biu din thnh tng ca ca cc s
Fibonaci khc nhau hay khng?

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 37

Bi 95/2002 - Dy con c tng ln nht


(Dnh cho hc sinh THPT)
Cho dy gm n s nguyn a1, a2, ..., an. Tm dy con gm mt hoc mt s phn t lin
tip ca dy cho vi tng cc phn t trong dy l ln nht.
D liu: Vo t file vn bn SUBSEQ.INP
- Dng u tin cha s nguyn dng n (n < 106).
- Dng th i trong s n dng tip theo cha s ai (|ai| 1000).
Kt qu: Ghi ra file vn bn SUBSEQ.OUT
- Dng u tin ghi v tr ca phn t u tin ca dy con tm c.
- Dng th hai ghi v tr ca phn t cui cng ca dy con tm c
- Dng th ba ghi tng cc phn t ca dy con tm c.
V d:
SUBSEQ.INP SUBSEQ.OUT
8 12 -14 1 23 -6 3 6 40
22 -34 13

Bi 96/2002 - S chung ln nht


(Dnh cho hc sinh THPT)
Cho 2 xu:
X = x1x2..xM. (Vi xi l cc k t s t 0 n 9)
Y = y1y2..yN.( Vi yi l cc k t s t 0 n 9)
(M, N <= 250)
Ta gi: Z = z1z2..zk l xu chung ca 2 xu X, Y nu xu Z nhn c t xu X bng cch
xo i mt s k t v cng nhn c t xu Y bng cch xo i mt s k t.
Yu cu: Tm mt xu chung ca 2 xu X, Y sao cho xu nhn c to thnh mt s
ln nht c th c.
D liu vo file: String.inp
Gm 2 dng, dng 1 l xu X, dng 2 l xu Y.
Kt qu ra file: String.out
Gm 1 dng duy nht l s ln nht c th nhn c.
V d:
String.inp String.out
19012304 34
034012

Bi 97/2002 - Thay s trong bng


(Dnh cho hc sinh Tiu hc)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 38

Bng di gm 9 , ban u c in bi cc ch ci. Bn hy thay cc ch ci bi


cc ch s t 0 n 8 vo sao cho tt c cc s theo hng ngang, hng dc u l s c
3 ch s (ch s hng trm phi khc 0) v tho mn:
1 2 3
4 a b c
5
d e f
6
g h i
Ngang
4 - Bi s nguyn ca 8;
5 - Tch ca cc s t nhin lin tip u tin;
6 - Tch cc s nguyn t k nhau
Dc
1 - Bi nguyn ca 11;
2 - Tch ca nhiu tha s 2;
3 - Bi s nguyn ca 11.
( ra ca bn o Tun Anh - Lp 10A Trng THPT Nng Khiu Ng S Lin - th
x Bc Giang)

Bi 98/2002 - S phn nguyn t


(Dnh cho hc sinh THCS v THPT)
Mt s n gi l s phn nguyn t nu s c s ca n l nhiu nht trong n s t
nhin u tin. Cho s K (K <= 2 t). Hy ghi ra s phn nguyn t ln nht nh hn
hoc bng K.
D liu vo trong file PNT.INP ni dung gm:
- Dng u tin l s M (1 < M <= 100) - s cc s cn tm s phn nguyn t ln nht
ca n;
- M dng tip theo ln lt l cc s K1, K2, K3, ..., KM;
D liu ra trong file PNT.OUT gm M dng: dng th i l s phn nguyn t ln nht
nh hn hoc bng Ki.
V d:
PNT.INP
1
1000
PNT.OUT
840
(Tc gi: Master - gi bi qua Website ca Tin hc & Nh trng)

Bi 99/2002 - Bi ton chc Tt


(Dnh cho hc sinh THPT)
Mt ngi quyt nh dnh mt ngy Tt n chc Tt cc bn ca mnh. chc
chn, hm trc anh ta in thoi n tng ngi hi khong thi gian m ngi
c th tip mnh. Gi s c N ngi c hi (nh s t 1 n N), ngi th i cho

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 39

bit thi gian c th tip trong ngy l t Ai n Bi (i = 1, 2, ..., N). Gi thit rng,
khong thi gian cn thit cho mi cuc gp l H v khong thi gian chun b t mt
cuc gp n mt cuc gp k tip l T. Bn hy xy dng gip mt lch chc Tt
anh ta c th chc Tt c nhiu ngi nht.
File d liu vo trong file CHUCTET.INP gm dng u ghi s N, dng th i trong s
N dng tip theo ghi khong thi gian c th tip khch ca ngi i gm 2 s thc Ai v
Bi (cch nhau t nht mt du trng). Dng tip theo ghi gi tr H (s thc) v dng cui
cng ghi gi tr T (s thc). Gi thit rng cc gi tr thi gian u c vit di dng
thp phn theo n v gi, tnh n 1 s l (th d 10.5 c ngha l mi gi ri) v u
nm trong khong t 8 n 21 (t 8 gi sng n 9 gi ti). S khch ti a khng qu
30.
Kt qu ghi ra file CHUCTET.OUT gm dng u ghi K l s ngi c thm, K
dng tip theo ghi trnh t i thm, mi dng gm 2 s (ghi cch nhau t nht mt du
trng): s u l s hiu ngi c thm, s tip theo l thi im gp tng ng.
Th d:
CHUCTET.INP
20

10.5 12.6
15.5 16.6
14.0 14.1
17.5 21.0
15.0 16.1
10.5 10.6
19.0 21.0
10.5 13.6
12.5 12.6
11.5 13.6
12.5 15.6
16.0 18.1
13.5 14.6
12.5 17.6
13.0 13.1
18.5 21.0
9.0 13.1
10.5 11.6
10.5 12.6
18.0 21.0
0.5
0.1
CHUCTET.OUT
16
17 9.0
1 10.5
18 11.1
19 11.7
8 12.3

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 40

10 12.9
11 13.5
13 14.1
5 15.0
2 15.6
12 16.2
14 16.8
4 17.5
7 19.0
16 19.6
20 20.2
( ra ca bn inh Quang Huy - HKHTN - HQG H Ni )

Bi 100/2002 - Mi khch d tic


(Dnh cho hc sinh THPT)
Cng ty trch nhim hu hn Vui v c n cn b nh s t 1 n n. Cn b i c nh
gi vui tnh l vi (i = 1, 2, ..., n). Ngoi tr Gim c Cng ty, mi cn b c 1 th
trng trc tip ca mnh.
Bn ch cn gip Cng ty mi mt nhm cn b n d d tic Vui v sao cho trong
s nhng ngi c mi khng ng thi c mt nhn vin v th trng trc tip v
ng thi tng nh gi vui tnh ca nhng ngi d tic l ln nht.
Gi thit rng mi mt th trng c khng qu 20 cn b trc tip di quyn.

D liu: Vo t file vn bn GUEST.INP


- Dng u tin ghi s cn b ca Cng ty: n (1 < n < 1001);
- Dng th i trong s n dng tip theo ghi hai s nguyn dng ti, vi; trong ti l s
hiu ca th trng trc tip v vi l vui tnh ca cn b i (i = 1, 2, ..., n). Quy c ti
= 0 nu i l s hiu ca Gim c Cng ty.

Kt qu: Ghi ra file vn bn GUEST.OUT


- Dng u tin ghi hai s m, v; trong m l tng s cn b c mi cn v l tng
vui tnh ca cc cn b c mi d tic;
- Dng th i trong s m dng tip theo ghi s hiu ca cn b c mi th i (i = 1,
2, ..., m).
V d:
GUEST.INP GUEST.OUT
3 27
03 1
16 3
24

GUEST.INP GUEST.OUT
7 3 63

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 41

01 3
11 4
1 12 5
2 50
21
31
31
( ra ca bn Lu Vn Minh)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 42

Phn II: LI GII


Bi 1/1999 - Tr chi cng nhau qua cu
(Dnh cho hc sinh Tiu hc)
p s: 17 pht. Cch i nh sau:
Lt 1: 2 + 1 sang, 1 quay v thi gian: 3 pht
Lt 2: 10 + 5 sang, 2 quay v thi gian: 12 pht
Lt 3: 2 + 1 sang thi gian: 2 pht
Tng thi gian: 17 pht

Bi 2/1999 - T chc tham quan


(Dnh cho hc sinh THCS)
Program bai2;
uses crt;
const fi = 'P2.inp';
fo = 'P2.out';
type _type=array[1..2] of integer;
mang=array[1..200] of _type;

var f:text;
d,v:mang;
m,n:byte;

procedure input;
var i:byte;
begin
assign(f,fi);
reset(f);
readln(f,n,m);
for i:=1 to n do
begin
read(f,d[i,1]);
d[i,2]:=i;
end;
readln(f);
for i:=1 to m do
begin
read(f,v[i,1]);
v[i,2]:=i;
end;
close(f);
end;

procedure sapxeptang(var m:mang;n:byte);


var d:_type;
i,j:byte;
begin
for i:=1 to n-1 do

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 43

for j:=i+1 to n do
if m[j,1]m[i,1] then
begin
d:=m[j];
m[j]:=m[i];
m[i]:=d;
end;
end;

var i:byte;
tong:integer;
begin
input;
sapxeptang(d,n);
sapxeptang(v,m);
tong:=0;
for i:=1 to n do tong:=tong+v[n-i+1,1]*d[i,1];
for i:=1 to n do v[i,1]:=d[n-i+1,2];
xapxeptang(v,n);
assign(f,fo);
rewrite(f);
writeln(f,tong);
for i:=1 to n do writeln(f,v[i,2]);
close(f);
end.

Nhn xt: Chng trnh trn s chy chm nu chng ta m rng bi ton (chng hn n
<= m <= 8000). Sau y l cch gii khc:

const
Inp = 'P2.INP';
Out = 'P2.OUT';
var
n, m: Integer;
Val, Pos: array[1..2, 1..8000] of Integer;
procedure ReadInput;
var
i: Integer;
hf: Text;
begin
Assign(hf, Inp);
Reset(hf);
Readln(hf, n, m);
for i := 1 to n do Read(hf, Val[1, i]);
Readln(hf);
for i := 1 to m do Read(hf, Val[2, i]);
Close(hf);
for i := 1 to m do
begin
Pos[1, i] := i;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 44

Pos[2, i] := i;
end;
end;
procedure QuickSort(t, l, r: Integer);
var
x, tg, i, j: Integer;
begin
x := Val[t, (l + r) div 2];
i := l; j := r;
repeat
while Val[t, i] < x do Inc(i);
while Val[t, j] > x do Dec(j);
if i <= j then
begin
Tg := Val[t, i]; Val[t, i] := Val[t, j]; Val[t, j] := Tg;
Tg := Pos[t, i]; Pos[t, i] := Pos[t, j]; Pos[t, j] := Tg;
Inc(i); Dec(j);
end;
until i > j;
if i < r then QuickSort(t, i, r);
if j > l then QuickSort(t, l, j);
end;
procedure WriteOutput;
var
i: Integer;
Sum: LongInt;
hf: Text;
begin
Sum := 0;
for i := 1 to n do Inc(Sum, Val[1, n - i + 1] * Val[2, i]);
for i := 1 to n do Val[1, Pos[1, n - i + 1]] := Pos[2, i];
Assign(hf, Out);
Rewrite(hf);
Writeln(hf, Sum);
for i := 1 to n do Writeln(hf, Val[1, i]);
Close(hf);
end;
begin
ReadInput;
QuickSort(1, 1, n);
QuickSort(2, 1, m);
WriteOutput;
end.

Bi 3/1999 - Mng t bo
(Dnh cho hc sinh THPT)
Program Bai3/1999;
uses crt;
const fi = 'P3.inp';

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 45

fo = 'P3.out';

type mang=array[0..201,0..201] of byte;

var m,n,t:byte;
s:string;
a:mang;
f:text;
b,c:^mang;

procedure input;
var i,j:byte;
begin
assign(f,fi);
reset(f);
readln(f,m,n,t);
readln(f,s);
for i:=1 to m do
begin
for j:=1 to n do read(f,a[i,j]);
end;
close(f);
new(b);
new(c);
end;

procedure hien;
var i,j:byte;
begin
for i:=1 to m do
for j:=1 to n do
begin
gotoxy(j*2,i);
write(b^[i,j]);
end;

end;

procedure trans(ch:char);
var i,j,d:byte;
begin
fillchar(c^,sizeof(mang),0);
for i:=1 to m do
for j:=1 to n do
begin
d:=b^[i,j];
case a[i,j] of
1:inc(c^[i,j-1],d);
2:inc(c^[i,j+1],d);
3:inc(c^[i-1,j],d);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 46

4:inc(c^[i+1,j],d);
5:begin inc(c^[i-1,j],d);inc(c^[i+1,j],d); end;
6:begin inc(c^[i,j-1],d);inc(c^[i,j+1],d); end;
7:begin inc(c^[i,j-1],d);inc(c^[i-1,j],d); end;
8:begin inc(c^[i,j+1],d);inc(c^[i+1,j],d); end;
end;
end;
if ch<>'X' then b^[1,1]:=ord(ch)-48;
for i:=1 to m do
for j:=1 to n do
if (i<>1) or (j<>1) then b^[i,j]:=byte(c^[i,j]<>0);
hien;
readln;
end;

procedure output;
var i,j:byte;
begin
assign(f,fo);
rewrite(f);
for i:=1 to m do
begin
for j:=1 to n do write(f,' ',b^[i,j]);
writeln(f);
end;
close(f);
end;

var i:byte;
begin
clrscr;
input;
fillchar(b^,sizeof(mang),0);
fillchar(c^,sizeof(mang),0);
for i:=1 to t do trans(s[i]);
output;
end.

Bi 4/1999 - Tr chi bc si
(Dnh cho hc sinh Tiu hc)
Huy s l ngi thng cuc. Tht vy s si ban u l 101 l mt s c dng 5k+1,
ngha l s nu chia 5 s cn d 1. Hong phi bc trc, do s si ca Hong phi ly
l t 1 n 4 do sau lt i u tin, s si cn li s ln hn 96. Huy s bc tip
theo sao cho s si cn li phi l 96, ngha l s dng 5k+1. Tng t nh vy, Huy
lun lun ch ng c sau ln bc ca mnh s si cn li l 5k+1. Ln cui cng
s si cn li ch l 1 v Hong bt buc phi bc vin cui cng v ... thua.
Bi ton tng qut: c th cho s vin bi l 5k+1 vin.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 47

Bi 5/1999 - 12 vin bi
(Dnh cho hc sinh THCS)
Ta s ch ra rng tn ti 3 ln cn ch ra c vin bi c bit .
Gi cc vin bi ny ln lt l 1, 2, ..., 12. Trong khi m t thut ton ta dng k hiu

m t qu hn bi th n

m t mt hn bi bt k

M t mt php cn.
Ta gi vin bi c trng lng khc l .

I. Ln cn th nht. Ly ra 8 hn bi bt k v chia lm 2 phn cn:

C 2 trng hp xy ra:
1.1. Cn trn cn bng. Suy ra vin bi (khng r nng nh) nm trong 4 vin bi cn
li (khng mang ra cn)
1.2. Cn trn khng cn bng.
1.2.1. Nu (1) nh hn (2) suy ra hoc l nh nm trong (1) hoc l nng nm
trong (2).
1.2.2. Nu (1) nng hn (2) suy ra hoc l nng nm trong (1) hoc l nh nm
trong (2).
D thy cc trng hp 1.2.1. v 1.2.2. l tng t nhau.
Trong mi trng hp ta c kt lun nm trong s 8 vin hoc nh trong 4 hoc nng
trong 4 cn li.
II. Xt trng hp 1.1: Tm c 4 vin bi cha
Gi cc hn bi ny l 1, 2, 3, 4
Ln cn th hai:

Xt cc trng hp sau:
2.1. Cn thng bng. Kt lun: vin bi 4 chnh l .
2.2. Trng hp cn tri nh hn phi (du <). Suy ra hoc 3 l nng, hoc 1 hoc 2
l nh.
2.3. Trng hp cn tri nng hn phi (du >). Suy ra hoc 3 l nh, hoc 1 hoc 2
l nng.
D thy rng cc trng hp 2.2. v 2.3. l tng t nhau.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 48

III. Xt trng hp 2.1: vin bi 4 chnh l


Ln cn th ba:

Nu cn nghing < th 4 l nh, nu cn nghing > th 4 l nng.


IV. Xt trng hp 2.2. Hoc 3 l nng, hoc 1 hoc 2 l nh.
Ln cn th ba:

Nu cn thng bng th ta c 1 l hn bi nh.


Nu cn nghing > th ta c 3 l hn bi nng.
Nu cn nghing < th ta c 2 l hn bi nh.
V. Xt trng hp 2.3. Hoc 3 l nh, hoc 1 hoc 2 l nng.

Cch lm tng t trng hp 2.2 m t trong mc IV trn.


VI. Xt trng hp 1.2.1.
Hoc l nh trong 1, 2, 3, 4 hoc l nng trong 5, 6, 7, 8.
Ln cn th hai:

6.1. Trng hp cn thng bng. Suy ra s phi nm trong 4, 7, 8, v do theo gi


thit ca trng hp ny ta c hoc l 4 nh, hoc l nng trong 7, 8. D nhn
thy trng hp ny hon ton tng t nh 2.2. Bc tip theo lm tng t nh m t
trong IV.
6.2. Trng hp cn nghing <, suy ra hoc l nh ri vo 1, 2 hoc l 6 nng.
Trng hp ny cng hon ton tng t nh 2.2. Bc tip theo lm tng t nh m
t trong IV.
6.3. Trng hp cn nghing >, suy ra hoc l 5 nng, hoc l nh 3.
VII. Xt trng hp 6.3.
Hoc l 5 nng, hoc l 3 nh.
Ln cn th ba:

Nu cn thng bng, suy ra 5 l nng.


Nu cn nghing < suy ra 3 l nh.
Tt c cc trng hp ca bi ton c xem xt.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 49

Sau y l chng trnh chi tit.

Program bai5;
Uses crt;
Const
st1=' nang hon.';
st2=' nhe hon.';
Var i, kq1: integer;
kq2: string;
ch: char;
(* Th tc Kq *)
Procedure kq(a: integer; b: string);
Begin
kq1:=a;
kq2:=b;
End;
(* Th tc Cn *)
Procedure can(lan: integer; t1, t2, t3, t4, p1, p2, p3, p4: string);
Begin
Writeln('Ln cn th', lan, ' :');
Writeln;
Writeln(' ', t1, ' ', t2, ' ', t3, ' ', t4, ' ', p1, ' ', p2, ' ', p3, ' ', p4);
Writeln;
Write(' Bn no nng hn? Tri(t)/Phi(p)/ Hay cn bng(c)');
Repeat
ch:=readkey;
ch:=upcase(ch);
Until (ch in ['P', 'T', 'C']);
Writeln(ch);
Writeln(*==========================================*);
End;
(* Th tc Play *)
Procedure play;
Begin
Writeln('C 12 qu cn: 1 2 3 4 5 6 7 8 9 10 11 12');
Writeln('Cho php bn chn ra mt qu cn nng hn hay nh hn nhng qu khc.');
can(1, '1', '2', '3', '4', '5', '6', '7', '8');
If (ch='T') then {T}
Begin
can(2, '1', '2', '5', ' ', '3', '4', '6', ' ');
If (ch='T') then {TT}
Begin
can(3, '1', '6', ' ', ' ', '7', '8', ' ', ' ');
If ch='T' then kq(1, st1); {TTT}
If ch='P' then kq(6, st2); {TTP}
If ch='C' then kq(2, st1); {TTC}
End
Else If (ch='P') then {TP}
Begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 50

can(3, '3', '5', ' ', ' ', '7', '8', ' ', ' ');
If ch='T' then kq(3, st1); {TPT}
If ch='P' then kq(5, st2); {TPP}
If ch='C' then kq(4, st1); {TPC}
End
Else If (ch='C') then {TC}
Begin
can(3, '7', ' ', ' ', ' ', ' ', '8', ' ', ' ');
If ch='T' then kq(8, st2); {TCT}
If ch='P' then kq(7, st2); {TCP}
If ch='C' then
Begin
Writeln('Tr li sai!'); kq2:=st2;
End;
End;
End
Else If (ch='P') then {P}
Begin
can(2, '5', '6', '1', ' ', '7', '8', '2', ' ');
If (ch='T') then {PT}
Begin
can(3, '5', '2', ' ', ' ', '3', '4', ' ', ' ');
If ch='T' then kq(5, st1);
If ch='P' then kq(2, st2);
If ch='C' then kq(6, st1);
End
Else If (ch='P') then {PP}
Begin
can(3, '7', '1', ' ', ' ', '3', '4', ' ', ' ');
If ch='T' then kq(7, st1);
If ch='P' then kq(1, st2);
If ch='C' then kq(8, st1);
End
Else If (ch='C') then {PC}
Begin
can(3, '3', ' ', ' ', ' ', ' ', '4', ' ', '');
If ch='T' then kq(4, st2);
If ch='P' then kq(3, st2);
If ch='C' then
Begin
Writeln('Tr li sai !'); kq2:=st2;
End;
End;
End
Else If (ch='C') then {C}
Begin
can(2, '9', '10', '11', ' ', '1', '2', '3', ' ');
If (ch='T') then
{CT}
Begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 51

can(3, '9', ' ', ' ', ' ', '10', ' ', ' ', ' ');
If (ch='T') then kq(9, st1);
If (ch='P') then kq(10, st1);
If (ch='C') then kq(11, st1);
End
Else If (ch='P') then {CP}
Begin
can(3, '9', ' ', ' ', ' ', '10', ' ', ' ', ' ');
If (ch='T') then kq(10, st2);
If (ch='P') then kq(9, st2);
If (ch='C') then kq(11, st2); End
Else If (ch='C') then {CC}
Begin
can(3, '12', ' ', ' ', ' ', '1', ' ', ' ', ' ');
If (ch='T') then kq(12, st1);
If (ch='P') then kq(12, st2);
If (ch='C') then Writeln('Tr li sai!');
kq1:=12;
End;
End;
End;
(* Chng trnh chnh*)
Begin
Clrscr;
play;
Writeln(' Qu th', kq1, kq2);
Writeln(' Nhn Enter kt thc...');
Readln;
End.

Bi 6/1999 - Giao im cc ng thng


(Dnh cho hc sinh THPT)
Program Bai6;
(* Tinh so giao diem cua n duong thang 0 trung nhau *)
Uses Crt;
Const
fn = 'P6.INP';
fg = 'P6.OUT';
max = 100;
exp = 0.0001;
Var
a ,b ,c : array[1..max] of real;
n : integer;
sgd : integer;
Procedure Nhap;
Var
f: text;
i: integer;
Begin
Assign( f ,fn ); Reset( f );

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 52

Readln( f ,n );
For i := 1 to n do
Readln( f ,a[i] ,b[i] ,c[i] ); { ax + by = c }
Close( f );
End;
(*--------------------------------------------------------------------------*)
Procedure Chuanbi;
Begin
sgd := 0;
End;
(*--------------------------------------------------------------------------*)
Function Giaodiem( i ,j : integer;Var x ,y : real ) : boolean;
Var
d ,dx ,
dy : real;
Begin
d := a[i] * b[j] - a[j] * b[i];
dx := c[i] * b[j] - c[j] * b[i];
dy := a[i] * c[j] - a[j] * c[i];
If d <> 0 then
begin
x := dx / d;
y := dy / d;
end;
giaodiem := d <> 0;
End;
(*--------------------------------------------------------------------------*)
Function Giatri( i : integer;x ,y : real ) : real;
Begin
Giatri := a[i] * x + b[i] * y - c[i];
End;
(*--------------------------------------------------------------------------*)
Function bang( a ,b : real ) : boolean;
Begin
bang := abs( a - b ) <= exp;
End;
(*--------------------------------------------------------------------------*)
Function Thoaman( i ,j : integer;x ,y : real ) : boolean;
Var
ii: integer;
Begin
Thoaman := false;
For ii := 1 to i - 1 do
If (ii <> j) and bang( giatri( ii ,x ,y ) ,0 ) then
exit;
Thoaman := true;
End;
(*--------------------------------------------------------------------------*)
Function Catrieng( i : integer ) : integer;
Var

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 53

ii , gt:integer;
x, y : real;
Begin
gt := 0;
For ii := 1 to i do
If giaodiem( i ,ii ,x ,y ) then
If thoaman( i ,ii ,x ,y ) then Inc( gt );
catrieng := gt;
End;
(*--------------------------------------------------------------------------*)
Procedure Tinhsl;
Var
i : integer;
Begin
For i := 1 to n do
Inc( sgd ,catrieng( i ) );
End;
(*--------------------------------------------------------------------------*)
Procedure GhiKQ;
Begin
Writeln(So giao diem cua cac duong thang la: ' ,sgd );
End;
(*--------------------------------------------------------------------------*)
BEGIN
ClrScr;
Nhap;
Chuanbi;
Tinhsl;
ghiKQ;
END.

Bi 7/1999 - Min mt phng chia bi cc ng thng


(Dnh cho hc sinh THPT)
Program Bai7;
(* Tinh so giao diem cua n duong thang ko trung nhau *)
Uses Crt;
Const
fn = 'P7.INP';
fg = 'P7.OUT';
max = 100;
exp = 0.0001;
Var
a ,b ,c : array[1..max] of real;
n : integer;
smien : integer;
Procedure Nhap;
Var
f : text;
i : integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 54

Begin
Assign( f ,fn ); Reset( f );
Readln( f ,n );
For i := 1 to n do
Readln( f ,a[i] ,b[i] ,c[i] ); { ax + by = c }
Close( f );
End;
(*--------------------------------------------------------------------------*)
Procedure Chuanbi;
Begin
smien := 1;
End;
(*--------------------------------------------------------------------------*)
Function Giaodiem( i ,j : integer;Var x ,y : real ) : boolean;
Var
d ,dx ,dy :real;
Begin
d := a[i] * b[j] - a[j] * b[i];
dx:= c[i] * b[j] - c[j] * b[i];
dy := a[i] * c[j] - a[j] * c[i];
If d <> 0 then
begin
x := dx / d;
y := dy / d;
end;
Giaodiem := d <> 0;
End;
(*--------------------------------------------------------------------------*)
Function Giatri( i : integer;x ,y : real ) : real;
Begin
Giatri := a[i] * x + b[i] * y - c[i];
End;
(*--------------------------------------------------------------------------*)
Function bang( a ,b : real ) : boolean;
Begin
bang := abs( a - b ) <= exp;
End;
(*--------------------------------------------------------------------------*)
Function Thoaman( i : integer;x ,y : real ) : boolean;
Var
ii : integer;
Begin
Thoaman := false;
For ii := 1 to i - 1 do
If bang( Giatri( ii ,x ,y ) ,0 ) then
exit;
Thoaman := true;
End;
(*--------------------------------------------------------------------------*)
Function Cattruoc( i : integer ) : integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 55

Var
ii , gt : integer;
x, y : real;
Begin
gt:= 0;
For ii := 1 to i - 1 do
If Giaodiem( i ,ii ,x ,y ) then
If Thoaman( ii ,x ,y ) then Inc( gt );
cattruoc := gt;
End;
(*--------------------------------------------------------------------------*)
Procedure Tinhslmien;
Var
i : integer;
Begin
For i := 1 to n do
Inc( smien ,cattruoc( i ) + 1 );
End;
(*--------------------------------------------------------------------------*)
Procedure GhiKQ;
Begin
Writeln(So mien mat phang duoc chia la: ' ,smien );
End;
(*--------------------------------------------------------------------------*)
BEGIN
Clrscr;
Nhap;
Chuanbi;
Tinhslmien;
GhiKQ;
END.

Bi 8/1999 - Cn to
(Dnh cho hc sinh Tiu hc)
S ln cn t nht l 3. Cch cn nh sau:
Ln 1: Chia 27 qu to thnh 3 phn, mi phn 9 qu. t 2 phn ln 2 a cn. Nu cn
thng bng th qu to nh nm phn cha cn, nu cn lch th qu to nh nm a
cn nh hn. Sau ln cn th nht, ta chn ra c 9 qu to trong c qu to nh.
Ln 2: Chia 9 qu to, chn c ra thnh 3 phn, mi phn 3 qu. t 2 phn ln 2 a
cn. Nu cn thng bng th qu to nh nm phn cha cn, nu cn lch th qu to
nh nm a cn nh hn. Sau ln cn th 2, ta chn ra c 3 qu to trong c qu
to nh.
Ln 3: Ly 2 trong s 3 qu to chn t ln 2 a cn. Nu cn thng bng th qu to
nh l qu to cn li, nu cn lch th qu to nh nm a cn nh hn. Sau ba ln
cn ta chn ra c qu to nh.

Bi 9/1999 - Bc dim

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 56

(Dnh cho hc sinh Tiu hc)


Nu s lng que dim ca mi dy l: 3, 5, 8 th hai bn Nga v An bn no bc trc
s thng. C nhiu cch ngi bc trc s thng. Gi s:
- Dy th nht cso 8 que dim.
- Dy th hai c 5 que dim.
- Dy th hai c 3 que dim.
Nu Nga l ngi bc trc thng, Nga s lm nh sau:
1. Bc ht 8 que dim dy u tin. Nh vy cn 2 dy tng cng 8 que. An s phi
bc mt s que mt trong hai dy ny.
2. Trong trng hp sau khi An bc s dim ch cn trn mt dy, Nga s bc tt c s
dim cn li v s thng. Nu sau khi An bc m s dim vn cn trn hai dy th Nga
cng s phi bc sao cho a An vo th bt li: mi dy trong 2 dy cui cng cn
ng mt que dim. Nu cha a An c vo th bt li th phi bc sao cho mnh
khng phi th bt li. Chng hn nh:
- An bc 3 que dim dy th 2. Nga s bc 1 que dy cui cng.
- An bc 1 que dim tip theo cng dy . Nga cng s bc 1 que dy th 3.
- An bc 1 que tip theo. Khi , Nga bc que dim cui cng v thng cuc.
Cc bn cng c th th cho cc trng hp khc.

Bi 10/1999 - Dy s nguyn
(Dnh cho hc sinh THCS)
Dy cho l dy cc s t nhin vit lin nhau:
123456789 101112...99 100101102...999 100010011002...9999
10000...
9x1=9
90 x 2 = 180
900 x 3 = 2700
9000 x 4 = 36000 ...
Ta c nhn xt sau:
- on th 1 c 9 ch s;
- on th 2 c 180 ch s;
- on th 3 c 2700 ch s;
- on th 4 c 36000 ch s;
- on th 5 c 90000 x 5 = 450000 ch s ...
Vi k = 1000 ta c: k = 9 + 180 + 3.270 + 1.
Do , ch s th k l ch s u tin ca s 370, tc l ch s 3.
Chng trnh:
Program Bai10;
Uses crt;
Var k: longInt;
(*--------------------------------------------*)
Function chuso(NN: longInt):char;
Var st:string[10];

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 57

dem,M:longInt;
Begin
dem:=0;
M:=1;
Repeat
str(M,st);
dem := dem+length(st);
inc(M);
Until dem >= NN;
chuso := st[length(st) - (dem - NN)]
(*-------------------------------------*)
BEGIN
clrscr;;
write('Nhap k:');
Readln(k);
Writeln('Chu so thu', k,'cua day vo han cac so nguyen khong am');
write('123456789101112... la:', chu so(k));
Readln;
END.
Cch gii khc:
var n, Result: LongInt;

procedure ReadInput;
begin
Write('Ban hay nhap so K: '); Readln(n);
end;

procedure Solution;
var
i, Sum, Num, Digits: LongInt;
begin
Sum := 9; Num := 1; Digits := 1;
while Sum < n do
begin
Num := Num * 10; Inc(Digits);
Inc(Sum, Num * 9 * Digits);
end;
Dec(Sum, Num * 9 * Digits); Dec(n, Sum);
Num := Num + (n - 1) div Digits;
n := (n - 1) mod Digits + 1;
for i := 1 to Digits - n do Num := Num div 10;
Result := Num mod 10;
end;

procedure WriteOutput;
begin
Writeln('Chu so can tim la: ', Result);
Readln;
end;
begin
ReadInput;
Solution;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 58

WriteOutput;
end.

Bi 11/1999 - Dy s Fibonaci
(Dnh cho hc sinh THCS)
{$R+}
const
Inp = 'P11.INP';
Out = 'P11.OUT';
Ind = 46;
var
n: LongInt;
Fibo: array[1..Ind] of LongInt;
procedure Init;
var
i: Integer;
begin
Fibo[1] := 1; Fibo[2] := 1;
for i := 3 to Ind do Fibo[i] := Fibo[i - 1] + Fibo[i - 2];
end;
procedure Solution;
var
i: LongInt;
hfi, hfo: Text;
begin
Assign(hfi, Inp);
Reset(hfi);
Assign(hfo, Out);
Rewrite(hfo);
while not Eof(hfi) do
begin
Readln(hfi, n);
Write(hfo, n, ' = ');
i := Ind; while Fibo[i] > n do Dec(i);
Write(hfo, Fibo[i]);
Dec(n, Fibo[i]);
while n > 0 do
begin
Dec(i);
if n >= Fibo[i] then
begin
Write(hfo, ' + ', Fibo[i]);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 59

Dec(n, Fibo[i]);
end;
end;
Writeln(hfo);
end;
Close(hfo);
Close(hfi);
end;
begin
Init;
Solution;
end.

Bi 12/1999 - N-mino
(Dnh cho hc sinh THPT)
Program Bai12;{Tinh va ve ra tat ca Mino}
Uses Crt;
Const fn = 'NMINO.INP';
fg = 'NMINO.OUT';
max = 16;
Type bang = array[0..max+1,0..max+1] of integer;
Var n : integer;
lonmin : integer;
hinh ,hinh1 ,xet ,dd : bang;
hang ,cot: array[1..max] of integer;
sl : integer;
qi,qj : array[1..max*max] of integer;
sh ,sc :integer;
hangthieu , cotthieu:integer;
slch : longint;
f : text;

Procedure Nhap;
Var f:text;
Begin
Assign(f,fn); Reset(f);
Readln(f ,n);
Close(f);
End;

Procedure Chuanbi;
Begin
lonmin:= trunc(sqrt(n));
If n <> sqr(lonmin) then Inc(lonmin);
slch := 0;
End;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 60

Function min2( a ,b : integer ) : integer;


Begin
If a < b then min2 := a Else min2 := b;
End;

Procedure Taobien( i ,j : integer );


Var ii ,jj : integer;
Begin
FillChar(dd ,SizeOf(dd),1);
FillChar(xet,SizeOf(xet),1);
For ii := 1 to i do
For jj := 1 to j do
begin
dd[ii,jj] := 0;
xet[ii,jj] := 0;
end;
End;

Procedure Ghinhancauhinh;
Var i ,j : integer;
Begin
Inc(slch);
Writeln(f,sh ,' ' ,sc);
For i := 1 to sh do
begin
For j := 1 to sc do Write(f,(dd[i,j] mod 2):2);
Writeln(f)
end;
End;

Procedure Quaytrai;
Var hinh1 : bang;
i,j : integer;
Begin
hinh1:= hinh;
For i := 1 to sh do
For j := 1 to sc do hinh[i,j] := hinh1[sc-j+1,i];
End;

Procedure Lathinh;
Var hinh1 : bang;
i ,j : integer;
Begin
hinh1:= hinh;
For i := 1 to sh do
For j := 1 to sc do hinh[i,j] := hinh1[sh-i+1,sc-j+1];
End;

Procedure Daohinh;
Var hinh1 : bang;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 61

i,j : integer;
Begin
hinh1 := hinh;
For i := 1 to sh do
For j := 1 to sc do hinh[i,j] := hinh1[sh-i+1,j];
End;

Function Bethat : boolean;


Var ii,jj :integer;
Begin
Bethat := false;
For ii := 1 to sh do
For jj := 1 to sc do
If hinh[ii,jj] <> hinh1[ii,jj] then
begin
Bethat:= hinh[ii,jj] < hinh1[ii,jj];
exit;
end;
End;

Function Behon : boolean;


Begin
Behon := Bethat;
End;

Function Xethinhvuong : boolean;


Begin
Xethinhvuong := false;
Quaytrai;
If Behon then exit; Quaytrai;
If Behon then exit; Quaytrai;
If Behon then exit; Daohinh;
If Behon then exit; Quaytrai;
If Behon then exit; Quaytrai;
If Behon then exit; Quaytrai;
If Behon then exit; Xethinhvuong := true;
End;

Function Xetchunhat : boolean;


Begin
Xetchunhat := false;
Lathinh;
If Behon then exit; Daohinh;
If Behon then exit; Lathinh;
If Behon then exit; Xetchunhat := true;
End;

Procedure Chuyensang( a : bang;Var b : bang );


Var i,j:integer;
Begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 62

For i := 1 to sh do
For j := 1 to sc do b[i,j] := a[i,j] mod 2;
End;

Procedure Thughinhancauhinh;
Begin
Chuyensang(dd ,hinh);
hinh1:= hinh;
If sh = sc then begin If not Xethinhvuong then exit; end
Else If not Xetchunhat then exit;
Ghinhancauhinh;
End;

Procedure Xetthem( i ,j : integer );


Begin
Inc(xet[i,j]);
If xet[i,j] = 1 then
begin
Inc(sl);
qi[sl] := i;
qj[sl] := j
end;
End;

Procedure Xetbot( i ,j : integer );


Begin
If xet[i,j] = 1 then Dec(sl);
Dec( xet[i,j] );
End;

Procedure Themdiem( ii : integer );


Var i ,j : integer;
Begin
i := qi[ii];
j := qj[ii];
dd[i,j] := 1;
If dd[i,j-1] = 0 then Xetthem(i ,j-1);
If dd[i,j+1] = 0 then Xetthem(i ,j+1);
If dd[i-1,j] = 0 then Xetthem(i-1,j);
If dd[i+1,j] = 0 then Xetthem(i+1,j);
End;

Procedure Bodiem( ii : integer );


Var i , j : integer;
Begin
i := qi[ii];
j := qj[ii];
dd[i,j] := 0;
If dd[i,j-1] = 0 then Xetbot(i,j-1);
If dd[i,j+1] = 0 then Xetbot(i,j+1);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 63

If dd[i-1,j] = 0 then Xetbot(i-1,j);


If dd[i+1,j] = 0 then Xetbot(i+1,j);
End;

Procedure Xethangcot( ii : integer );


Var i ,j :integer;
Begin
i := qi[ii];
j := qj[ii];
Inc(hang[i]);
If hang[i] = 1 then Dec(hangthieu);
Inc(cot[j]);
If cot[j] = 1 then Dec(cotthieu);
End;

Procedure Xetlaihangcot( ii : integer );


Var i,j : integer;
Begin
i := qi[ii];
j := qj[ii];
If hang[i] = 1 then Inc(hangthieu);
Dec(hang[i]);
If cot[j] = 1 then Inc(cotthieu);
Dec(cot[j]);
End;

Procedure Duyet( i : integer;last : integer );


Var ii :integer;
Begin
If i > n then
begin thughinhancauhinh; exit; end;
For ii := last + 1 to sl do
begin
themdiem(ii);
xethangcot(ii);
If hangthieu + cotthieu <= n - i then duyet(i+1,ii);
Xetlaihangcot(ii);
bodiem(ii);
end;
End;

Procedure Duyetcauhinh( i ,j : integer );


Var jj : integer;
Begin
sh := i;
sc := j;
FillChar(hang ,SizeOf(hang),0);
FillChar(cot,SizeOf(cot),0);
hangthieu := sh;
cotthieu := sc;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 64

taobien(i ,j);
For jj := 1 to j do
begin
sl:= 1;
qi[1] := 1;
qj[1] := jj;
duyet(1,0);
dd[1,jj] := 2;
end;
End;

Procedure Duyethinhbao;
Var i ,j : integer;
minj ,maxj : integer;
Begin
For i := lonmin to n do
begin
minj := (n-1) div i + 1;
maxj := min2(n+1-i,i);
For j := minj to maxj do duyetcauhinh(i,j);
end;
End;

Procedure Ghicuoi;
Var f : file of char;
s : string;
i : integer;
Begin
str(slch,s);
Assign(f,fg); reset(f);
Seek(f,0);
For i := 1 to length(s) do Write(f,s[i]);
Close(f);
End;

BEGIN
Clrscr;
Assign(f,fg); Rewrite(f);
Writeln(f ,' ');
Nhap;
Chuanbi;
duyethinhbao;
Close(f);
ghicuoi;
END.

Bi 13/1999 - Phn hoch hnh ch nht


(Dnh cho hc sinh THPT)
{Recommend:m,n<5}

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 65

const m=4;n=4;max=m*n;
var
a: array[1..m,1..n] of byte;
i1,j1,dem,daxep,tg: integer;
f: text;
time: longint absolute $0:$46C;
save: longint;
{------------------------------------}
procedure init;
begin
for i1:=1 to m do
for j1:=1 to n do a[i1,j1]:=0;
dem:=0; daxep:=0; tg:=0;
end;
{------------------------------------}
procedure kq;
begin
for i1:=1 to m do
begin
for j1:=1 to n do write(f,a[i1,j1],' ');
writeln(f);
end;
end;
{------------------------------------}
procedure try(i,j: integer);
var i2,j2,flag: integer;
begin
if (daxep=max) then begin kq; writeln(f); tg:=tg+1; end
else
begin
flag:=j;
while (flag
if (a[i,flag]<>0) then flag:=flag-1;
for i2:=i to m do for j2:=j to flag do
begin
dem:=dem+1;
for i1:=i to i2 do for j1:=j to j2 do a[i1,j1]:=dem;
daxep:=daxep+(i2-i+1)*(j2-j+1);
i1:=i;j1:=j2;
while (a[i1,j1]<>0) do
begin
j1:=j1+1;
if j1=n+1 then begin j1:=1; i1:=i1+1; end;
end;
try(i1,j1);
daxep:=daxep-(i2-i+1)*(j2-j+1);
for i1:=i to i2 do
for j1:=j to j2 do a[i1,j1]:=0;
dem:=dem-1;
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 66

end;
end;
{------------------------------------}
BEGEN
init;
assign(f,'kq.dat'); rewrite(f);
save:=time;
try(1,1);
write(f,tg);
close(f);
write('Time is about:',(time-save)/18.2);
readln;
END.

Bi 14/2000 - Tm s trang sch ca mt quyn sch


(Dnh cho hc sinh Tiu hc)
tin tnh ton, ta s nh s li quyn sch bng cc s 001, 002, 003,..., 009, 010,
011, 012, 013,..., 098, 099, 100, 101,... tc l mi s ghi bng ng 3 ch s. Nh vy ta
phi cn thm 9x2=18 ch s cho cc s trc y ch c 1 ch s v 90 ch s cho cc
s trc y ch c 2 ch s, tng cng ta phi dng thm 108 ch s. Vi cch nh s
mi ny, ta phi cn ti 1392+108=1500 ch s. V mi s c ng 3 ch s nn c tt
c 1500:3=500 s, bt u t 001. Vy quyn sch c 500 trang.

Bi 15/2000 - Hi ngh i vin


(Dnh cho hc sinh Tiu hc)
tin tnh ton, c mi mt cp bn trai-bn gi quen nhau ta s ni li bng mt si
dy. Nh vy mi bn s b "buc" bi ng N si dy v quen vi N bn khc gii. Gi
s bn trai l T th tnh c s dy ni l TxN. Gi s bn gi l G th tnh c s dy
ni l GxN. Nhng v 2 cch tnh cho cng kt qu l s dy ni nn TxN=GxN, suy ra
T=G. Vy trong hi ngh s cc bn trai v cc bn gi l nh nhau.

Bi 16/2000 - Chia s
(Dnh cho hc sinh THCS)
Lp mt bng 2NxN . Ln lt ghi N2 s 1, 2, 3,..., N2-1, N2 vo N ct, mi ct N s
theo cch sau:
1
2 N+1
3 N+2 2N+1
... ... ... ... ...
N 2N-1 3N-2 ... (N-1)N+1
2N 3N-1 ... N2-(N-2)
3N ... N2-(N-3)
... N2-(N-4)
...

Trong N hng trn, tng i s trong hng th i l:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 67

i+[N+(i-1)]+[2N+(i-2)]+...+[(i-1)N+1]
= N[1+2+...+(i-1)]+[i+(i-1)+(i-2)+...+1]
= Ni(i-1)/2+i(i+1)/2
= (Ni2-Ni+i2+i)/2
Trong N hng di, tng (N-i) s trong hng th N+i l
(i+1)N+[(i+2)N-1]+[(i+3)N-2]+...+[N2-(N-i-1)]
= N[(i+1)+(i+2)+...+N]-[1+2+...+(N-i-1)]
= N(N+i+1)(N-i)/2 - (N-i-1)(N-i)/2
= (N2+Ni+i+1)(N-i)/2
= (N3+Ni+N-Ni2-i2-i)/2
Ct i bng chnh gia theo ng k m v ghp li thnh mt bng vung nh
sau:

1 2N 3N-1 ... N2-(N-2)


2 N+1 3N ... N2-(N-3)
3 N+2 2N+1 ... N2-(N-4)
... ... ... ... ...
N 2N-1 3N-2 ... (N-1)N+1

Khi tng cc s trong hng th i l


(Ni2-Ni+i2+i)/2 + (N3+Ni+N-Ni2-i2-i)/2 = (N3+N)/2 = N(N2+1)/2
R rng trong mi hng c N s v tng cc s trong mi hng l nh nhau.

Bi 17/2000 - S nguyn t tng ng


(Dnh cho hc sinh THCS)
C th vit chng trnh nh sau:
Program Nttd;
Var M,N,d,i: integer;
{------------------------------------}
Function USCLN(m,n: integer): integer;
Var r: integer;
Begin
While n<>0 do
begin
r:=m mod n; m:=n; n:=r;
end;
USCLN:=m;
End;
{------------------------------------}
BEGIN
Write('Nhap M,N: '); Readln(M,N);
d:=USCLN(M,N); i:=2;
While d<>1 do
begin
If d mod i =0 then
begin
While d mod i=0 do d:=d div i;
While M mod i=0 do M:=M div i;
While N mod i=0 do N:=N div i;
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 68

Inc(i);
end;
If M*N=1 then Write('M va N nguyen to tuong duong.')
Else Write('M va N khong nguyen to tuong duong.');
Readln;
END.

Bi 18/2000 - Sn b
(Dnh cho hc sinh THCS v THPT)
Ta c th thy ngay l con sn phi i N bc (v xi+1 = xi+1), v nu i ln k bc th
li di xung k bc (v yN = y0 = 0). Do , h = N div 2;
Chng trnh c th vit nh sau:
Program Senbo;
Uses Crt, Graph;
Var f:Text;
gd, gm, N, W,xo,yo:Integer;
Procedure Nhap;
Begin
Write('Nhap so N<50:');Readln(N);
If N>50 Then N:=50;
End;
Procedure Veluoi;
Var i,j,x,y:Integer;
Begin
W:=(GetMaxX -50) Div N;
yo:=GetMaxY-100;
xo:=(GetMaxX-W*N) Div 2-25;
For i:=0 To N Do
For j:=0 To N Div 2 Do
Begin
x:=i*W+xo;
y:=yo-J*W;
Bar(x-1,y-1,x+1,y+1);
End;
End;

Procedure Bo
Var i,j,xo,yo,x,y:Integer;
Sx,Sy,S:String;
Begin
j:=0;xo:=xo;y:=yo;
Writeln(f,N:2,N Div 2:3);
SetColor(2);
OutTextXY(xo,yo+5,'(0,0)');
For i:=1 To N Do
Begin
If i<=N-i Then Inc(j)
Else If j>0 Then Dec(j);
Writeln(f,i:2,j:3);
x:=i*W+xo;y:=yo-j*W;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 69

Line(xo,yo,x,y);
Str(i,sx);str(j,sy);
S:='('+sx+','+sy+')');
OutTextXY(x,y+5,s);
Delay(10000);
xo:=x;yo:=y;
End;
End;

Begin
Nhap;
Assign(F,'P5.Out');
ReWrite(F);
Dg:=Detect;
InitGraph(Gd,Gm,'');
VeLuoi;
Bo;
Readln;
Close(F);
CloseGraph;
End.

Bi 19/2000 - a gic
(Dnh cho hc sinh THPT)
Ta s chng minh khng nh sau cho n 3:
Cc s thc dng a1, a2, a3,..., an lp thnh cc cnh lin tip ca mt a gic n
cnh khi v ch khi vi mi k=1, 2,..., n ta c cc bt ng thc sau:
a1 + a2 +... (thiu k)... + an > ak (1)
(tng ca n-1 cnh bt k phi ln hn di cnh cn li)
Chng minh
Chng minh c tin hnh qui np theo n. Vi n = 3 th (1) chnh l bt ng thc tam
gic quen thuc.
Gi s (1) ng n n. Xt (1) cho trng hp n+1.
Trc tin ta c nhn xt sau: Cc s a1, a2,..., an, an+1 lp thnh mt a gic n +1 cnh
khi v ch khi tn ti mt s g sao cho a1, a2, a3,..., an-1, g to thnh mt a gic n cnh
v g, an, an+1 to thnh mt tam gic.
Gi s a1, a2, a3,..., an, an+1 lp thnh mt a gic n +1 cnh. Khi theo nhn xt trn
th tn ti a gic n cnh a1, a2, a3,..., an-1, g v tam gic g, an, an+1. Do ta c cc bt
ng thc sau suy t gi thit qui np v bt ng thc tam gic:
a1 + a2 + a3 +.... + an-1 > g (2)
an + an+1 > g > |an - an+1| (3)
Do vy ta c
a1 + a2 + a3 +.... + an-1 > |an - an+1| (4)
t (4) suy ra ngay cc khng nh sau:
a1 + a2 + a3 +.... + an-1 + an > an+1 (5)
a1 + a2 + a3 +.... + an-1 + an+1 > an (6)
Mt khc t gi thit qui np cho a gic n cnh a1, a2, a3,..., an-1, g, tng t nh (2) ta
c cc bt ng thc sau vi k < n:
a1 + a2 +... (thiu k)... + an-1 + g > ak
thay th v tri ca (3) ta phi c vi k <N:< p>

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 70

a1 + a2 +... (thiu k)... + an-1 + an + an+1 > ak (7)


Cc bt ng thc (5), (6) v (7) chnh l (1). iu kin cn c chng minh.
Gi s ngc li, h bt ng thc (1) tho mn, ta c
a1 + a2 +... + an-1 + an > an+1 (8)
a1 + a2 +... + an-1 + an+1 > an (9)
v vi mi k < n ta c:
a1 + a2 +...(thiu k)... + an-1 + an + an+1 > ak (10)
T (8) v (9) ta c ngay:
a1 + a2 +... + an-1 > |an - an+1| (11)
T (10) suy ra vi mi k < n ta c:
an + an+1 > ak - a1 - a2 -...(thiu k)... - ak (12)
T cc bt ng thc (11) v (12) suy ra tn ti mt s dng g tha mn ng thi cc
iu kin sau:
an + an+1 > g > |an - an+1| (13)
a1 + a2 +... + an-1 > g (14)
g > ak - a1 - a2 -...(thiu k)... - ak (15)
Cc bt ng thc (13), (14) v (15) chnh l iu kin tn ti a gic n cnh a1, a2,
a3,..., an-1, g v tam gic g, an, an+1. iu kin c chng minh.

Chng trnh:
Program Dagiac;
Uses Crt;
Const fn = 'P6.INP';
Var i,j,N: integer;
a: array[1..100] of real;
s: real;
Kq: boolean;
{------------------------------------}
Procedure Nhap;
Var f: text;
Begin
Assign(f,fn); Reset(f);
Readln(f,N);
For i:=1 to N do Read(f,a[i]);
Close(f);
End;
{------------------------------------}
BEGIN
Nhap;
Kq:=true;
For i:=1 to N do
begin
s:=0;
For j:=1 to N do If j<>i then s:=s+a[j];
If s<=a[i] then Kq:=false;
end;
If Kq then Write('Co.') Else Write('Khong.');
Readln;
END.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 71

Bi 20/2000 - Bn Lan cn h s my?


(Dnh cho hc sinh Tiu hc)
Ta coi nh cc cn h c nh s t 1 n 64 (v ngi nh c 8 tng, mi tng c 8
cn h). Ta c th hi nh sau:
- C phi s nh bn ln hn 32?
Sau khi Lan tr li, d "ng" hay "khng" ta cng bit chnh xc cn h ca Lan
trong s 32 cn h no. Gi s cu tr li l "khng" ta cng bit chnh xc cn h ca
Lan trong s 32 cn h no. Gi s cu tr li l "khng", ta hi tip:
- C phi s nh bn ln hn 16?
Sau cu hi ny ta bit c 16 cn h trong c cn h Lan ang .
Tip tc hi nh vy i vi s ng gia trong cc s cn li. Sau mi cu tr li
khong cch gia cc s gim i mt na. C nh vy, ch cn 6 cu hi, ta s bit c
cn h Lan .

Bi 21/2000 - Nhng trang sch b ri


(Dnh cho hc sinh Tiu hc)
Nu trang b ri u tin nh s 387 th trang cui cng s phi nh s ln hn v
phi l s chn. Do vy trang cui cng phi l 738.
Nh vy, c 738 - 378 + 1= 352 trang sch (176 t ) b ri.

Bi 22/2000 - m ng i
(Dnh cho hc sinh THCS)
a) C tt c 8 ng i t A n B sao cho mi ng i qua mt nh no ch ng
mt ln. C th:
A B
AEB
AEFB
AEDFB
AEFCB
AEDCB
AEFDCB
AEDFCB
b). C tt c 8 ng i t A n D, sao cho ng i qua mi cnh no ch ng
mt ln, c th:
ABCD
ABED
ABFD
AED
AEBFD
AEBCD
AEFD
AEFCD
c). Cc ng i qua tt c cc cnh ca hnh, qua mi cnh ng mt ln (im bt u
v im kt thc trng nhau):
-

+ Cc ng i qua tt c cc cnh ca hnh, qua mi cnh ng mt ln (im bt u


v im kt thc khng trng nhau):

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 72

- im bt u l C v im kt thc l D:
CFBCDFEBAED
CFBCDFEABED
CDFCBFEBAED
....
Tng t nh th vi im bt u l D v im kt thc l C ta cng tm c cc
ng tho mn tnh cht ny.

Bi 23/2000 - Quay Rubic


(Dnh cho hc sinh THPT)
Khai trin mt rubic v nh s cc mt nh hnh v sau:
Khi ta c th xy dng th tc Quay (mt th i) i mu 8 mt con ca mt ny
v 12 mt con k vi mt ny. Trn c s gii c 2 bi ton ny. Chng trnh c
th vit nh sau:
Program Rubic;
uses Crt;
Type Arr= array[0..5, 0..7] of byte;
const color: Array [0..5] of char=('F', 'U','R', 'B', 'L', 'D');
Var
A1, A2, A0, A: Arr;
X, X1, X2: String;
k: byte;
Procedure Nhap;
Var i, j: byte;
Begin
Clrscr;
Writeln ('Bai toan 1. So sanh hai xau:');
Writeln ('Nhap xau X1:');
Readln (X1);
Writeln (' Nhap xau X2:');
Readln (X2);
Writeln ('Bai toan 2. Tinh so lan xoay:');
Write ('Nhap xau X:');
Readln (X);
For i:= 0 to 5 do
For j:= 0 to 7 do A[i, j]:= i;
A:=A0; A1:=A0; A2:=A0;
End;
Procedure Quay (Var A: Arr; k: byte);
Const Dir : array
[0.. 5, 0.. 3, 0.. 3] of byte = ( ( (1,2,5,4), (6,0,2,4), (5,7,1,3), (4,6,0,2) ),
( (0,4,3,2), (0,0,4,0), (1,1,5,1), (2,2,6,2) ),
( (0,1,3,5), (4,4,4,4), (3,3,3,3), (2,2,2,2) ),
( (1,4,5,2), (2,0,6,4), (1,7,5,3), (0,6,4,2) ),
( (0,5,3,1), (0,0,0,0), (7,7,7,7),(6,6,6,6) ),
( (0,2,3,4), (6,6,2,6), (5,5,1,5), (4,4,0,4) ) );
var i,j,tg: byte;
Begin
tg:=A[k,6];
for i:=3 downto 1 do A[k,0] := A[k,2*i-2];

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 73

A[k,0]:=tg;
tg:=A[k,7];
for i:=3 downto 1 do A[k,2*i] := A[k,2*i -2];
A[k,1]:=tg;
for i:=1 to 3 do
begin
tg:=A[dir[k,0,3], Dir[k,i,3];
for j:=3 downto 1 do A[ dir[k,0,j], Dir[k,i,j] ]:= A[ dir[k,0,j-1], Dir[k,i,j-1] ];
A[ [dir[k,0,0], Dir[k,i,0] ]:=tg;
end;
End;
Function Eq(A,B:Arr):Boolean;
Var i,j,c:byte;
Begin
c:=0;
for i:=1 to 5 do
for j:=1 to 7 do
If A[i,j] <> B[i,j] then inc(c);
If c=0 then Eq:=true else Eq:=false;
End;
Procedure QuayXau(x:string; var A: arr);
Var i,j:byte;
Begin
for i:=1 to length(X) do
begin
for j:= 1 to 5 do
If Color[j] = X[i] then Quay(A,j);
end;
End;
Procedure Bai1;
Begin
QuayXau(X1,A1);
QuayXau(X2,A2);
End;
Procedure Bai2;
Begin
k:=0;
Repeat
QuayXau(X,A);
Inc(k);
Until Eq(A,A0);
End;
Procedure Xuat;
Var i,j:byte;
Begin
writeln;
writeln('Ket qua:');
writeln('Bai toan 1. So sanh 2 xau:') ;
If Eq(A1,A2) then writeln('Hai xau X1 va X2 cho cung mot ket qua.');
writeln('Can ap dung xau X ',k,' lan de Rubic quay ve trang thai ban dau.');

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 74

Readln;
End;
Begin
Nhap;
Bai1;
Bai2;
Xuat;
END.

Bi 24/2000 - Sp xp dy s
(Dnh cho hc sinh Tiu hc)
C th sp xp dy s cho theo cch sau:

Ln th Cch i ch Kt qu
0 Dy ban u 3, 1, 7, 9, 5
1 i ch 1 v 3 1, 3, 7, 9, 5
2 i ch 5 v 7 1, 3, 5, 9, 7
3 i ch 7 v 9 1, 3, 5, 7, 9

Bi 25/2000 - Xy dng s
(Dnh cho hc sinh THCS)
C th lm nh sau:
1+35+7 = 43
17+35 = 52

Bi 26/2000 - T mu
(Dnh cho hc sinh THCS)
K hiu mu Xanh l x, mu l d, mu Vng l v. Ta c 12 cch t mu c lit k
nh sau:

x d v x xx dd vv xx xx dd vv xx xx dd vv xx
d v x d vv xx dd vv dd xx vv dd vv dd xx vv
v x d v dd vv xx dd vv dd xx vv dd xx vv dd
x d v x xx dd vv xx xx vv dd xx xx vv dd xx

dd vv xx dd dd vv xx dd dd xx vv dd vv xx dd vv
xx dd vv xx vv xx dd vv xx vv dd xx xx dd vv xx
vv xx dd vv xx dd vv xx vv dd xx vv dd vv xx dd
dd vv xx dd dd vv xx dd dd xx vv dd vv xx dd vv

vv xx dd vv vv dd xx vv vv dd xx vv dd xx vv dd
dd vv xx dd dd xx vv dd xx vv dd xx vv dd xx vv
xx dd vv xx xx vv dd xx dd xx vv dd xx vv dd xx
vv xx dd vv vv dd xx vv vv dd xx vv dd xx vv dd

Bi 27/2000 - Bn c

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 75

(Dnh cho hc sinh THPT)


Chng trnh ca bn Nguyn Tin Dng lp 8A2 trng PTTH chuyn Bn Tre, tnh
Bn Tre.
Program Ban_co;
Uses Crt;
Var a: array [1..8, 1..8] of 0..1;
b, c, d, p: array [0..8,0..8] of integer;
max:integer;
Procedure Input;
Var f: text; i, j: integer;
st: string[8];
Begin
Assign (f, 'banco2.txt');
Reset (f);
For i:=1 to 8 do
begin
Readln(f,st);
For j:=1 to 8 do If st[j]= 0 then a[i,j]:=0 else a[i,j]:=1;
end;
Close(f);
End;
Procedure Init;
Begin
Input;
Fillchar(b,sizeof(b),0);
c:=b; d:=b; p:=b;
End;
Function Get_max(x, y, z, t: integer): integer;
Var k: integer;
Begin
k:=x;
If k < y then k:=y;
If k < z then k:=z;
If k < t then k:=t;
Get_max:=k;
End;
Procedure Find_max;
Var
i, j, k: integer;
Begin
max:=0;
For i:=1 to 8 do
For j:=1 to 8 do
If a[i, j]= 1 then
begin
b[i, j]:=b[i-1,j]+1;
c[i, j]:=c[i,j-1]+1;
d[i,j]:=d[i-1,j-1]+1;
p[i,j]:=p[i-1,j+1]+1;
k:=get_max(b[i,j], c[i,j], d[i,j], p[i,j]);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 76

If max < k then max:=k;


end;
Writeln (max);
Readln;
End;
BEGIN
Clrscr;
Init;
Find_max;
END.

Bi 28/2000 - i tin
(Dnh cho hc sinh Tiu hc)
C 10 cch i t 10 ngn ng bng cc ng tin 1, 2 v 5 ngn ng.

S t 1 ngn S t 2 ngn S t 5 ngn


0 0 2
1 2 1
3 1 1
5 0 1
0 5 0
2 4 0
4 3 0
6 2 0
8 1 0
10 0 0

Bi 29/2000 - Chn bn
(Dnh cho hc sinh THCS)
Gi mt bn hc sinh no trong 6 bn l A. Chia 5 bn cn li thnh 2 nhm: Nhm
1 gm nhng bn quen A, nhm 2 gm nhng bn khng quen A (d nhin A khng nm
trong 2 nhm ). V tng s cc bn trong 2 nhm bng 5 nn chc chn c 1 nhm c
t 3 bn tr ln. C th xy ra hai kh nng:
Kh nng 1. Nhm 1 c t 3 bn tr ln: Khi nu cc bn trong nhm khng ai
quen ai th bn thn nhm cha 3 bn khng quen nhau cn tm. Ngc li nu c 2
bn trong nhm quen nhau th hai bn cng vi A chnh l 3 bn quen nhau cn
tm.
Kh nng 2. Nhm 2 c t 3 bn tr ln: Khi nu cc bn trong nhm 2 quen
nhau i mt th nhm cha 3 bn quen nhau i mt cn tm; ngc li nu c 2
bn trong nhm khng quen nhau th 2 bn cng vi A chnh l 3 bn khng quen
nhau cn tm.

Bi 30/2000 - Phn t yn nga


(Dnh cho hc sinh THCS)
const
Inp = 'Bai30.INP';
Out = 'Bai30.OUT';
MaxLongInt = 2147483647;
var
Min, Max: array[1..5000] of LongInt;
m, n: Integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 77

procedure ReadInput;
var
i, j, k: Integer;
hf: Text;
begin
Assign(hf, Inp);
Reset(hf);
Readln(hf, m, n);
for i := 1 to m do Min[i] := MaxLongInt;
for j := 1 to n do Max[j] := -MaxLongInt;
for i := 1 to m do
begin
for j := 1 to n do
begin
Read(hf, k);
if Min[i] > k then Min[i] := k;
if Max[j] < k then Max[j] := k;
end;
Readln(hf);
end;
Close(hf);
end;
procedure WriteOutput;
var
i, j: Integer;
Result: Boolean;
hf: Text;
begin
Result := False;
Assign(hf, Out);
Rewrite(hf);
Writeln(hf, 'Cac phan tu yen ngua la: ');
for i := 1 to m do
for j := 1 to n do
if Min[i] = Max[j] then
begin
Result := True;
Write(hf, '(', i, ',', j, '); ');
end;
if not Result then
begin
Rewrite(hf);
Write(hf, 'Khong co phan tu yen ngua');
end;
Close(hf);
end;
begin
ReadInput;
WriteOutput;
end.
33
15 3 9
55 4 6
76 1 2

Bi 32/2000 - Bi ton 8 hu
(Dnh cho hc sinh Tiu hc)
C rt nhiu cch xp. Sau y l mt vi cch cc bn tham kho:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 78

01000000 00010000
00000100 00000001
00100000 10000000
00000010 00001000
01000000 00001000
00000010 00010000
10000000 00000001
00000100 00100000
01000000 00001000
00000010 10000000
00100000 00000001
00000100 00010000
01000000 00000100
10000000 00000010
00010000 00000001
00100000 00001000
tm ht nghim ca bi ny chng ta phi s dng thut ton quy - Quay lui. Sau
y l chng trnh, chy ra 92 nghim v ghi cc kt qu ra file HAU.OUT.

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
uses crt;

const fo = 'hau.out';
n = 8;

var A : array[1..n,1..n] of byte;


c : array[1..n] of byte;
dc1 : array[2..2*n] of byte;
dc2 : array[1-n..n-1] of byte;
sn : integer;
f : text;

procedure ghino;
var i,j : byte;
begin
inc(sn);
writeln(f,'Nghiem thu ',sn,' la :');
for i := 1 to n do
begin
for j := 1 to n do
write(f,A[i,j],#32);
writeln(f);
end;
writeln(f);
end;

procedure vet(i : byte);


var j : byte;
begin

if i = n+1 then
begin
ghino;
exit;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 79

end;

for j := 1 to n do
if (c[j] =0)and(dc1[i+j]=0) and (dc2[i-j]=0) then
begin
A[i,j] := 1; c[j] := 1; dc1[i+j] :=1 ; dc2[i-j] := 1;
vet(i+1);
A[i,j] := 0; c[j] := 0; dc1[i+j] :=0 ; dc2[i-j] := 0;
end;
end;

BEGIN
assign(f,fo);
rewrite(f);
vet(1);
close(f);
END.

Bi 33/2000 - M ho vn bn
(Dnh cho hc sinh THCS)
a. M ho:
PEACE thnh UJFHJ
HEAL THE WORLD thnh MJFQ YMJ BTWQI
I LOVE SPRING thnh N QTAJ XUWNSL.
b. Qui tc gii m cc dng ch c m ho theo quy tc trn: (ly v d k t X):
-Tm s th t tng ng ca k t, ta c 23.
-Tng gi tr s ny ln 21 (thc ra l gim gi tr s ny i 5 ri cng vi 26), ta c
44.
-Tm s d trong php chia s ny cho 26 ta c 18.
-Tra ngc bng ch ci ta thu c S.
Gii m:
N FRF XYZIJSY thnh I AM A STUDENT
NSKTVRFYNHX thnh INFOQMATICS.
MFSTN SFYNTSFQ ZSNBJVXNYD thnh HANOI NATIONAL UNIWEQSITY.
Sau y l chng trnh m t thut ton gii quyt bi 33/2000, gm 2 th tc chnh l:
mahoatu (chuyn xu thnh xu m ho) v giaimatu (chuyn xu thnh xu gii m).
Cc bn c th xem kt qu sau khi chy chng trnh bng cch n Alt + F5.

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
uses crt;

function mahoa(x : char) : char;


var vtri : byte;
begin
if upcase(x) in ['A'..'Z'] then
begin
vtri := ord(upcase(x))-ord('A');
vtri := vtri+5;
mahoa := char( vtri mod 26+ord('A'));
end
else mahoa := x;
end;

function giaima(x : char) : char;


var vtri : byte;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 80

begin
if upcase(x) in ['A'..'Z'] then
begin
vtri := ord(upcase(x))-ord('A');
vtri := vtri-5+26;
giaima := char( vtri mod 26 + ord('A'));
end
else giaima := x;
end;

procedure mahoatu(s : string);


var i : byte;
begin
write(s,' -> ');
for i := 1 to length(s) do write(mahoa(s[i]));
writeln;
end;

procedure giaimatu(s : string);


var i : byte;
begin
write(s,' <- ');
for i := 1 to length(s) do write(giaima(s[i]));
writeln;
end;

BEGIN
clrscr;
mahoatu('PEACE');
mahoatu('HEAL THE WORLD');
mahoatu('I LOVE SPRING');
giaimatu('N FR F XYZIJSY');
giaimatu('NSKTVRFYNHX');
giaimatu('MFSTN SFYNTSFQ ZSNBJVXNYD');
END.

Bi 34/2000 - M ho v gii m
(Dnh cho hc sinh THCS)

Program bai34;
Uses crt;
Const
Ord : array['A', ..'Z'] of byte =(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25);
chr : array[0..25] of char = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
Var s:string;
i, j:integer; ch:char;
Begin
S:='';
Writeln('Nhap xau ki tu:');
Repeat
ch:= ReadKey;
If (ch in ['a'..'z', 'A'..'Z']) then
Begin
ch := Upcase(ch); Write(ch);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 81

S := S + ch;
End;
Until ch = #13; Writeln;
For i := 1 to length(s) do
If S[i] <> ' ' then S[i] := chr[(ord{s[i]] + 5) mod 26];
Writeln('Xau ki tu tren duoc ma hoa la:'); write(s); Readln;
S:= ' ' ;
Writeln('Nhap xau ki tu can giai ma:');
Repeat
ch := Readkey;
If (ch in ['a'..'z', 'A'..'Z']) then
Begin
ch := Upcase(ch); Write(ch);
s := s + ch;
End;
Until ch = #13; Writeln;
for i := 1 to length{S) do
If S[i] <> ' ' then S[i] := chr[(Ord[S[i]] + 21) mod 26;
writeln('Xau ki tu tren duoc giai ma la:'); write(s);
Readln;
End.
Cc bn cng c th s dng li 2 th tc mahoatu v giaimatu bi 33/2000 gii
bi ny. Vic thit k giao din khi nhp xu t bn phm xin dnh cho cc bn.

Bi 35/2000 - Cc phn s c sp xp
(Dnh cho hc sinh THPT)
Program bai35;
Uses crt;
Type Phanso = (tu, mau);
Var F: array[1..4000, phanso] of integer;
N, dem : Integer;
Procedure nhap;
Begin
Write('Nhap so N:'); Readln(N);
F[1,tu] := 0; F[1,mau] := 1; dem := 2;
F[dem, tu] := 1; F[dem,mau] := 1;
End;
Procedure Chen(t,m,i:Integer);
Var j:integer;
Begin
Inc(dem);
For j := dem downto i + 1 do
begin
F[j,tu] := F[j-1,tu];
F[j,mau] := F[j-1,mau];
end;
F[i,tu] := t; F[i,mau] := m;
End;
Program xuli;
Var t,m,i:integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 82

Begin
for m:=2 to N do
for t:=1 to m-1 do
begin
i:=1;
While (F[i,tu]*m < F[i,mau]*t) do inc(i);
If (F[i,tu]*m > F[i,mau]*t) then chen(t,m,i);
end;
End;
Procedure xuat;
var i:integer;
Begin
for i:=2 to dem do
begin
If WhereX > 75 then writeln;
If WhereY > 24 then
begin
Write('Nhan Enter de tiep tuc');
Readln;
end;
write('Tat ca co', dem,' phan so.');
Readln;
End;
BEGIN
nhap;
xuli;
Xuat;
END.

Bi 36/2000 - Anh chng h tin


(Dnh cho hc sinh Tiu hc)
Lit k s tin phi tr cho tng chic cc ri cng li, ta c bng sau:

Th t S tin Cng dn
1 1 1
2 2 3
3 4 7
4 8 15
5 16 31
6 32 63
7 64 127
8 128 255
9 256 511
10 512 1023
11 1024 2047
12 2048 4095
13 4096 8191
14 8192 16383
15 16384 32767

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 83

16 32768 65535
17 65536 131071
18 131072262143
(= 218 -1)
Nh vy anh ta phi tr 262143 ng v anh ta r rng l b "h" nng do phi tr gp
hn 20 ln so vi cch th nht.

Bi 37/2000 - S siu nguyn t


(Dnh cho hc sinh THCS)
Program Bai37;
{SuperPrime};
var a,b: array [1..100] of longint;
N,i,k,ka,kb,cs: byte;
Function Prime(N: longint): boolean;
Var i: longint;
Begin
If (N=0) or (N=1) then
Prime:=false
Else
Begin
i:=2;
While (N mod i <> 0) and (i <= Sqrt(N)) do Inc(i);
If i > Sqrt(N) then
Prime:=true Else Prime:=false;
End;
End;
BEGIN
Write ('Nhap N: ');
Readln (N);
ka:=1; a[ka]:=0;
For i:=1 to N do
Begin
Kb:=0;
For k:=1 to ka do
For cs:=0 to 9 do
If Prime(a[k]*10+cs) then
Begin
Inc(kb);
b[kb]:=a[k]*10+cs;
end;
ka:=kb;
For k:=1 to ka do
a[k]:=b[k]; end;
For k:=1 to ka do
Write(a[k]:10);
Writeln;
Writeln('Co tat ca',ka,'so sieu nguyen to co',N,'chu so.');
Readln;
END.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 84

Bi 38/2000 - Tam gic s


Uses Crt;
Const inp='INPUT.TXT';
Var N,Smax: integer;
a: array [1..100,1..100] of integer;
{----------------------------------------}
Procedure Nhap;
Var f: text;
i,j: integer;
Begin
Assign(f,inp);
Reset(f);
Readln(f,n);
For i:=1 to N do
begin
For j:=1 to i do Read(f,a[i,j]);
Readln(f);
end;
Close(f);
End;
{----------------------------------------}
Procedure Thu(S,i,j: integer);
Var k,S_new: integer;
Begin
S_new:=S+a[i,j];
If i=N then
begin
If S_new>Smax then Smax:=S_new;
end
else
For k:=j to j+1 do Thu(S_new, i+1, k);
End;
{----------------------------------------}
BEGIN
Nhap;
Smax:=0;
Thu(0,1,1);
Write('Smax = ',Smax);
Readln;
END.

Di y cc bn c th tham kho li gii ca bn Phm c Thanh dng phng


php quy hoch ng trn mng hai chiu:
Program bai38;
Uses crt;
Type mang = array[1..100,1..100] of integer;
Var
f:text;
i,j,n:integer;
a,b:mang;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 85

Procedure Input;
Begin
clrscr;
Assign(f,'input.txt');
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;
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];
writeln('Smax:=',max);
readln;
end;
{------------------------------------}
BEGIN
Input;
makearrayofQHD;
FindMax;
END.

Nhn xt: Li gii dng thut ton quy hoch ng ca Phm c Thanh tt hn rt
nhiu so vi thut ton quy quay lui.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 86

Bi 39/2000 - ch
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S-,T-,V+,X+}
{$M 16384,0,655360}
uses crt;

const fi = 'input.txt';
fo = 'output.txt';

var A : array[1..5,1..5] of char;


new,blank : record x,y : integer end;

procedure no_no_and_no;
var f : text;
begin
assign(f,fo);
rewrite(f);
write(f,'This puzzle has no final configuration.');
close(f);
halt;
end;

procedure yes_yes_and_yes;
var f : text;
i,j : byte;
begin
assign(f,fo);
rewrite(f);
for i := 1 to 5 do
begin
for j :=1 to 5 do
write(f,a[i,j]);
writeln(f);
end;
close(f);
end;

procedure swap(px,py : integer);


var coc : char;
begin
new.x := blank.x + px;
new.y := blank.y + py;
if (new.x >5) or (new.y >5) or (new.x <1) or (new.y <1) then
no_no_and_no;

coc := A[new.x,new.y];
A[new.x,new.y] := A[blank.x,blank.y];
A[blank.x,blank.y] :=coc;
blank := new;
end;

procedure chuyen(ch : char);


begin
case ch of
'A' : swap( -1,0);
'B' : swap( 1,0);
'R' : swap( 0, 1);
'L' : swap( 0,-1);
end;
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 87

procedure docf;
var f : text;
i,j : byte;
s : string[5];
ch : char;
begin
assign(f,fi);
reset(f);
for i :=1 to 5 do
begin
readln(f,s);
if length(s) = 4 then s := s+ #32;
for j := 1 to 5 do
begin
A[i,j] := s[j];
if A[i,j] = #32 then
begin
blank.x := i;
blank.y := j;
end;
end;
end;
while not seekeof(f) do
begin
read(f,ch);
if ch = '0' then exit;
chuyen(ch);
end;
close(f);
end;

BEGIN
clrscr;
docf;
yes_yes_and_yes;
END.

Bi 40/2000 - My nh v Radio
Uses crt;
Const nmax = 30;
Output = 'P27.out';
Input = 'P27.inp';
Type
str20 = string[20];
Var
Toado : Array[1..nmax,1..2] of real;
TenDen,TenDen1,TenDen2 : Array[1..nmax] of str20;
n,j,i,k:integer;
Td1,Td2:array[1..2] of integer;
goc,g1,g2,v,l:array[1..2] of real;
t1,t2:array[1..2] of integer;
xd,yd,x,y, x1,x2,y1,y2:array[1..2] of real;
f:text;
Function tg(x: real): real;
Begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 88

if cos(x)<>0 then tg:=sin(x)/cos(x);


End;
Procedure DocDen(var s:str20);
Var d:char;
Begin
repeat
read(f,d);
Until (d<>' ');
s:='';
While (d<>' ') do
begin
s:=s+d;
Read(f,d);
End;
End;
Function XdToado(s:str20):Integer;
Var i:integer;
Begin
i:=1;
While (i<=n) and (s<> tenden[i]) do inc(i);
XdToado:=i;
End;

Procedure InputDen;
Var i:integer;
Begin
Assign(f,input);
Reset(f);
Readln(f,n);
For i:=1 to n do
Begin
DocDen(TenDen[i]);
Readln(f,Toado[i,1],Toado[i,2]);
End;
End;
Procedure Inputkichban;
Begin
Readln(f,k);
For i:=1 to k do
Begin
Readln(f, goc[i],v[i]);
Read(f,t1[i]);
Docden(tenden1[i]);
Td1[i]:=Xdtoado(tenden1[i]);
Readln(f,g1[i]);
Read(f,t2[i]);
Docden(tenden2[i]);
Td2[i]:=Xdtoado(tenden2[i]);
Readln(f,g2[i]);
End;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 89

Close(f);
End;
Procedure Doi;
Begin
For j:=1 to k do
Begin
goc[j]:=goc[j]*pi/180;
g1[j]:=g1[j]*pi/180;
g2[j]:=g2[j]*pi/180;
l[j]:=(t2[j]-t1[j])*v[j];
End;
End;
Procedure TinhToan;
Begin
Assign(f,output);Rewrite(f);
For j:=1 to k do
Begin
x1[j]:=Toado[td1[j],1];
y1[j]:=Toado[td1[j],2];
x2[j]:=Toado[td2[j],1];
y2[j]:=Toado[td2[j],2];
xd[j]:=x1[j]+l[j]*sin(goc[j]);
yd[j]:=y1[j]+l[j]*cos(goc[j]);
If (cos(goc[j]+g2[j])=0) or (cos(goc[j]+g1[j])=0) then
Writeln(f,'Scenario ',j,': Position cannot be determined')
else
Begin
y[j]:= (xd[j] - x2[j] - yd[j]*tg(goc[j] + g1[j]) + y2[j]*tg(goc[j] + g2[j]))/(tg(goc[j]
+ g2[j]) - tg(goc[j] + g1[j]));
x[j]:= x2[j] - (y2[j] - y[j])*tg(goc[j] + g2[j]);
Writeln(f,'Scenario ',j,': Positino is (', x[j]:6:2, y[j]:6:2,')') ;
end;
End;
End;
BEGIN
InputDen;
Inputkichban;
Doi;
TinhToan;
Close(f);
END.

Bi 41/2000 - C Othello
Program bai41; {Co Othello}
Uses Crt ;
Const Inp = 'othello.Inp' ;
Out = 'othello.out' ;
nmax = 50;
huongi:array[1..8] of integer = (-1,-1,-1,0,0,1,1,1);
huongj:array[1..8] of integer = (-1,0,1,-1,1,-1,0,1);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 90

Type
Mang1 = Array [1..nmax] of string[3] ;
Mang2 = Array [1..8,1..8] of char ;
Var f: text;
a: mang2; l:mang1;
c: char; n, k, code:integer;
di:array[1..8,1..8] of boolean;
x0,y0:array[1..nmax] of integer;
{=================================================}
Procedure nhap;
Var i,j : Byte ;
Begin
Assign(f,inp) ;
Reset(f) ;
for i:=1 to 8 do
begin
for j:=1 to 8 do Read(f,a[i,j]) ;
Readln(f) ;
end;
Readln(f,c) ;
i:=0;
while not eof(f) do
begin
inc(i);
Readln(f,l[i]);
end;
n:=i;
End ;
{===============================================}
Procedure kiemtra(i,j:integer);
Var m:integer;
Begin
Case c of
'B': If a[i,j] = 'B' then
Begin
m:= 1;
repeat
if (a[i+huongi[m],j+huongj[m]] = 'W')
and(i+huongi[m]>0)and(j+huongj[m]>0)
and(i+2*huongi[m]>0)and(j+2*huongj[m]>0)
and(i+huongi[m]<9)and(j+huongj[m]<9)
and(i+2*huongi[m]<9)and(j+2*huongj[m]<9)
and(A [i+2*huongi[m],j+2*huongj[m]] = '-')
then
di [i+2*huongi[m],j+2*huongj[m]] := True;
m:=m+1;
until m>8;
End;
'W': If (a[i,j] = 'W') then
Begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 91

m:= 1;
repeat
if (a [i+huongi[m],j+huongj[m]] = 'B')
and(i+huongi[m]>0)and(j+huongj[m]>0)
and(i+2*huongi[m]>0)and(j+2*huongj[m]>0)
and(i+huongi[m]<9)and(j+huongj[m]<9)
and(i+2*huongi[m]<9)and(j+2*huongj[m]<9)
and(a[i+2*huongi[m],j+2*huongj[m]] = '-')
then
di[i+2*huongi[m],j+2*huongj[m]] := True;
m:=m+1;
until m>8;
end;
End;{of Case}
End;
{================================================}
Procedure lietke;
Var
i,j,m: Integer;
t: Boolean;
Begin
t:= false;
for i:=1 to 8 do
for j:= 1 to 8 do
di[i,j]:=false;
for i:=1 to 8 do
for j:= 1 to 8 do kiemtra(i,j);
for i:= 1 to 8 do
for j:= 1 to 8 do
If di[i,j] then
Begin
t:= True;
Write (f,'(',i,',',j,')');
End;
If t=false then Write (f, 'No legal move.');
Writeln(f);
End;
{======================================}
Procedure latco(x0,y0:integer);
Var m:integer;
Begin
Case c of
'B': if a[x0,y0] ='-'then
begin
m:= 1;
repeat
If (a[x0-2*huongi[m],y0-2*huongj[m]] = 'B')
and(a[x0-huongi[m],y0-huongj[m]] = 'W')
then
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 92

a[x0,y0]:='B';
a[x0-huongi[m],y0-huongj[m]] := 'B';
end;

m:=m+1;
until m>8;
end;
'W': if a[x0,y0] ='-'then
begin
m:= 1;
repeat
If (a[x0-2*huongi[m],y0-2*huongj[m]] = 'W')
and(a[x0-huongi[m],y0-huongj[m]] = 'B')
then
begin
a[x0,y0]:='W';
a[x0-huongi[m],y0-huongj[m]] := 'W';
end;
m:=m+1;
until m>8;
end;
end;
End;
{=============================================}
Procedure Thuchien(k:integer);
Var
i,j,xx,yy,xx1,yy1: Integer;
code,m: Integer;
Begin

for i:= 1 to 8 do
for j:= 1 to 8 do
begin
if a[i,j]='W'then yy1:=yy1+1;
if a[i,j]='B'then xx1:=xx1+1;
end;
xx:= 0; yy:= 0;
for i:= 1 to 8 do
for j:= 1 to 8 do kiemtra(i,j);
If not di[x0[k],y0[k]] then
begin
Case c Of
'W':c:= 'B';
'B':c:= 'W';
End;
for i:= 1 to 8 do
for j:= 1 to 8 do kiemtra(i,j);
If not di[x0[k],y0[k]] then
Case c Of
'W':c:= 'W';

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 93

'B':c:= 'B';
End;
end;
latco(x0[k],y0[k]);
for i:= 1 to 8 do
for j:= 1 to 8 do
begin
if a[i,j]='W'then yy:=yy+1;
if a[i,j]='B'then xx:=xx+1;
end;
WriteLn (f,'Black - ',xx, ' White - ',yy );
if (xx<>xx1)and(yy<>yy1) then
Case c Of
'W':c:= 'B';
'B':c:= 'W';
End;
End;
{=============================================}
Procedure ketthuc;
Var
i,j:Integer;
Begin
for i:= 1 to 8 do
begin
for j:= 1 to 8 do Write (f,a [i,j]);
Writeln(f);
end;
End;
{==========================================}
Begin
clrscr;
nhap;
Assign(f,out);
Rewrite(f);
for k:=1 to n do
Case l[k][1] of
'L': Lietke;
'M':begin
Val(l[k][2],x0[k],code);
Val(l[k][3],y0[k],code);
Thuchien(k);
end;
'Q': ketthuc;
End;
Close(f);
End.

Bi 42/2000 - Mt cht v t duy s hc


(Dnh cho hc sinh Tiu hc)
Gi s A l s phi tm, khi A phi c dng:

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 94

A = 2k1 + 1 = 3k2 +2 = ... = 10k9 + 9 (k1, k2, ..., k9 - l cc s t nhin).


Khi A + 1 = 2(k1 + 1) = 3(k2 +1 ) = ... = 10(k9+ 1).
Vy A+1 phi l BSCNN (bi s chung nh nht) ca (2, 3, ..., 10) = 2520.
Do s phi tm l A = 2519.

Bi 43/2000 - Kim gi v kim pht gp nhau bao nhiu ln trong ngy


(Dnh cho hc sinh Tiu hc)
Ta c cc nhn xt sau:
+ Kim pht chy nhanh gp 12 ln kim gi. Gi s gi v l vn tc chy ca kim gi,
khi vn tc ca kim pht l 12v.
+ Mi gi kim pht chy mt vng v gp kim gi mt ln. Nh vy trong 24 gi, kim
gi v kim pht s gp nhau 24 ln. Tt nhin nhng ln gp nhau trong 12 gi u
cng nh cc ln gp nhau trong 12 gi sau. V cc ln gp nhau lc 0 gi, 12 gi v 24
gi l trng nhau v gp nhau vo chnh xc cc gi .
Do , y ta ch xt trong chu k mt vng ca kim gi (tc l t 0 gi n 12 gi).
Gi s kim gi v kim pht gp nhau lc h gi (h = 0, 1, 2, 3, ..., 10, 11) v s pht. V
gi s xt qung ng c o theo n v l pht. Do thi gian chy l nh nhau nn
ta c:
60.h s s

12h h
60h
60h = 11s s = .
11
Thay ln lt h = 0, 1, 2, 3, ..., 10, 11 vo ta s tnh c s.
V d:
Vi h = 0, s = 0 Kim gi v kim pht gp nhau ng vo lc 0 gi.
60 5 5
h = 1, s = = 5 Kim gi v kim pht gp nhau lc 1 gi 5 pht.
11 11 11
10 10
h = 2, s = 10 Kim gi v kim pht gp nhau lc 2 gi 10 pht.
11 11
....
h = 11, s = 60; 11 gi 60 pht = 12 gi Kim gi v kim pht gp nhau ng vo
lc 12 gi.

Bi 44/2000 - To ma trn s
(Dnh cho hc sinh THCS)
Program mang;
uses crt;
const n=9;
var a:array[1..n,1..n] of integer;
i,j,k:integer; t:boolean;
Begin
clrscr;
for j:=1 to n do
Begin
a[1,j]:=j;
a[j,1]:=a[1,j];
end;
i:=1;
repeat

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 95

i:=i+1;
for j:=i to n do
begin
t:= false;
for k:= 2 to j-1 do if (a[k-1,i]>a[k,i]) then t:=true;
if t then
begin
if a[j-1,i]+2 > n*2 then a[j,i]:=2 else a[j,i]:=a[j-1,i]+2;
a[i,j]:=a[j,i];
end
else
begin
if a[j-1,i]+i>2*n then a[j,i]:=2 else a[j,i]:=a[j-1,i]+i;
a[i,j]:=a[j,i];
end;
end;
until i=n;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
readln;
end.

Bi 45/2000 - Cc vng trn Olympic


(Dnh cho hc sinh THCS v PTTH)
{$Q-}
{$M 65000 0 655360}
Program Vong_Tron;
Uses Crt,Dos;
Const Max = 39;
Fileout = 'VTron.out';
Dvt : array [1 .. 5,0 .. 8] of byte = ((8,1,2,3 ,4 ,5 ,6 ,7,8),
(6,2,3,4 ,9 ,10,11,0,0),
(6,4,5,6 ,11,12,13,0,0),
(4,6,7,13,14,0 ,0 ,0,0),
(4,1,2,9 ,15,0 ,0 ,0,0));
D0 : array [1 .. 5] of byte = (8,11,13,14,15);
Type Limt = 0 .. Max;
Mang = array [Limt] of byte;
Var A,B : Mang;
dm : longint;
fout : text;
{-------------------------------------}
Procedure Time;
Var h,k,i,j : word;
Begin
Gettime(h,k,i,j);
writeln(h,' : ',k,' : ',i,'.',j);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 96

End;
{-------------------------------------}
Procedure Output;
Var i,j : byte;
Begin
Inc(dm);
For i := 1 to 15 do write(fout,A[i],' ');
writeln(fout);
End;
{-------------------------------------}
Function GT(j0,count : shortint) : byte;
Var s,i0 : shortint;
Begin
s := 0;
For i0 := 1 to Dvt[j0,0] do
if Dvt[j0,i0] <= count then Inc(s,A[Dvt[j0,i0]]);
GT := s;
End;
{-------------------------------------}
Procedure Try(s0,count,k0 : shortint);
Var i0 : shortint;
Begin
if (count <= D0[k0]) and (s0 <= Max) then
For i0 := 1 to Max-s0 do if B[i0] = 0 then
Begin
B[i0] := 1;
A[count] := i0;
if (count = D0[k0]) and (s0 + i0 = Max) then
Begin
if k0 = 5 then Output else Try(gt(k0 + 1,count),count + 1,k0 + 1);
End else Try(s0 + i0,count + 1,k0);
B[i0] := 0;
End;
End;
{-------------------------------------}
Procedure Process;
Begin
clrscr;
Time;
Assign(fout,fileout);rewrite(fout);
Fillchar(A,sizeof(A),0);
B:= A; dm := 0;
Try(0,1,1);
writeln(fout,'So cach : ',dm);
close(fout); Time;
End;
{-------------------------------------}
BEGIN
Process;
END.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 97

Cch ghi kt qu trong file Vtron.out nh sau: trong mi dng ghi mt cch t cc s
theo th t t 1 n 15 theo cch nh s nh trn hnh v. S cch xp c ghi cui
tp.

(Li gii ca bn Thanh Tng - Lp 12 Tin - PTTH chuyn Thi Bnh)

Bi 46/2000 - o ch ci
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
(*Du lieu vao: file 'inp.txt' voi cac tu khac nhau, moi tu ghi o mot dong;
Du lieu ra: file 'out.txt' *)
PROGRAM Sinh_hoan_vi;
USES Crt;
CONST
MAX = 100;
INP = 'inp.txt';
OUT = 'out.txt';
TYPE
STR = array[0..max] of char;
VAR
s :str;
f,g :text;
n :longint; { so luong tu}
time:longint ;

PROCEDURE Nhap_dl;
Begin
Assign(f,inp);
Assign(g,out);
Reset(f);
Rewrite(g);
Readln(f,n);
End;

PROCEDURE DocDay(var s:str);


Begin
Fillchar(s,sizeof(s),chr(0));

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 98

While not eoln(f) do


begin
s[0]:=chr(ord(s[0])+1);
read(f,s[ord(s[0])]);
end;
End;

PROCEDURE VietDay(s:str);
Var i :word;
Begin
For i:=1 to ord(s[0]) do Write(g,s[i]);
End;

PROCEDURE Sap_xep(l,r:word);{ giai thuat Quicksort}


Var i,j :word;
tg,tam :char;
Begin
i:=l;j:=r;
tg:=s[(l+r) div 2];
Repeat
While ord(s[i]) < ord(tg) do inc(i);
While ord(s[j]) > ord(tg) do dec(j);
If i<=j then
begin
tam:=s[i];
s[i]:=s[j];
s[j]:=tam;
inc(i);
dec(j);
end;
Until i>j;
If j>l then Sap_xep(l,j);
If i<r then Sap_xep(i,r);
End;

PROCEDURE Sinh_hv(s:str);
Var vti,vtj,i,j:word;
stop :boolean;
tam :char;
Begin
Writeln(g);
VietDay(s);
Repeat
Stop:=true;
For i:= ord(s[0]) downto 2 do
If s[i] > s[i-1] then
begin
vti:=i-1;
stop:=false;
For j:=ord(s[0]) downto vti+1 do

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 99

begin
If (ord(s[j])>ord(s[vti])) then
begin
vtj:=j;
break;
end;
end;
tam:=s[vtj];
s[vtj]:=s[vti];
s[vti]:=tam;
For j:=1 to ((ord(s[0]) - (vti+1))+1) div 2 do
begin
tam:=s[vti+j];
s[vti+j]:=s[ord(s[0])-j+1];
s[ord(s[0])-j+1]:=tam;
end;
Writeln(g);
VietDay(s);
break;
end;
Until stop;
End;

PROCEDURE Xu_ly;
Var i:longint;
Begin
For i:=1 to n do
begin
DocDay(s);
readln(f);
Sap_xep(1,ord(s[0]));
Sinh_hv(s);
Writeln(g);
end;
Close(f);
Close(g);
End;

BEGIN
Nhap_dl;
Xu_ly;
END.
(Li gii ca bn Nguyn Vit Bng - Lp 10 Tin - Trng ph thng Nng Khiu -
HQG TPHCM)

Bi 47/2000 - Xo s trn vng trn


Li gii 1:
Program vd;
Uses crt;
Var s:array[1..2000] of integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 100

i:integer;
Begin
Clrscr;
for i:=0 to 1999 do s[i]:=i+1;
s[2000]:=1;
i:=1;
repeat
s[i]:=s[s[i]];
i:=s[i];
until
s[i]=i;
writeln(i);
readln;
End.
(Li gii ca bn: H Huy Lun)

Li gii 2:
Program xoa_so;
Const N=2000;
Var x:integer;

Function topow(x:integer):integer;
Var P:integer;
Begin
P:=1;
Repeat
p:=p*2;
Until p>x;
topow:=p div 2;
End;

BEGIN
x:=1+2*(N-topow(N));
write(x);
END.
(Li gii ca bn: Nguyn Quang Trung - Lp 12A Trng HERMANN GMEINER,
Lt, Lm ng)

Li gii 3:
(* Thuat Giai Xu ly Bit *)
USES Crt;
CONST
Max = 2000;
VAR
A: array[0..(MAX div 8)] of byte;
so: word;
FUNCTION Laybit(i:word):byte;
Var k:word;
Begin
k:=i div 8;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 101

i:=i mod 8;
Laybit:=(a[k] shr (7-i)) and 1;
End;

PROCEDURE Tatbit(i:word);
Var k:word;
Begin
k:=i div 8;
i:=i mod 8;
a[k]:=a[k] and (not (1 shl (7-i)));
End;

FUNCTION Tim(j:word):word;
Begin
While (laybit(j+1)=0) do
begin
If j=max-1 then j:=0
else inc(j);
end;
Tim:=j+1;
End;

PROCEDURE Xuly;
Var j,dem,i :word;
Begin
j:=1;dem:=0;
Fillchar(a,sizeof(a),255);
Tatbit(0);
Repeat
If j=max then j:=0;
j:=tim(j);
Tatbit(j);
inc(dem);
If j=max then j:=0;
j:=tim(j);
Until dem=max-1;
For i:=0 to (max div 8) do
If a[i]<>0 then break;
so:=i * (1 shl 3);
For i:=so to so+7 do
If Laybit(i)=1 then break;
so:=i;
Writeln(' SO TIM DUOC LA :',SO:4);
Writeln(' Press Enter to Stop.....');
readln;
End;

BEGIN
Clrscr;
Xuly;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 102

END.
(Li gii ca bn: Nguyn Vit Bng - Lp 10 Tin - Ph thng Nng Khiu -
HQG.TPHCM)

Bi 48/2000 - Nhng chic gy


(Dnh cho hc sinh THPT)
Program bai48;
Var x:array[0..10000] of word;
d,a:array[1..1000] of byte;
n,p,s,gtmax:word;
fi,fo:text;
ok:boolean;

Procedure Q_sort(l,k:word);
Var h,i,j,t:word;
Begin
h:=a[(l+k)div 2];i:=l;j:=k;
Repeat
While a[i]>h do inc(i);
While a[j]<h do dec(j);
If i<=j then
Begin
t:=a[i];a[i]:=a[j];a[j]:=t;
inc(i);dec(j);
End;
Until i>j;
if i<k then Q_sort(i,k);
if j>l then Q_sort(l,j);
End;

Procedure phan(var ok:boolean);


Var i,p1,j:word;
Begin
Fillchar(x,sizeof(x),0);x[0]:=1;
For i:=1 to n do
If (d[i]=0) then
For j:=p downto a[i] do
If (x[j]=0) and(x[j-a[i]]<>0) then
Begin
x[j]:=i;
if j=p then
Begin
j:=a[i];
i:=n;
End;
End;
ok:=(x[p]<>0);
if ok then
Begin
p1:=p;
Repeat
d[x[p1]]:=1;
p1:=p1-a[x[p1]];
Until p1=0;
End;
End;

Procedure chat(Var ok:boolean);


Var i:word;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 103

Begin
Fillchar(d,sizeof(d),0);
Repeat
phan(ok);
Until not ok;
ok:=true;
for i:= n downto 1 do
if d[i]=0 then
Begin
ok:=false;
break;
End;
End;

Procedure Tinh;
Begin
For p:=gtmax to s div 2 do
Begin
chat(ok);
if ok then
Begin
writeln(fo,p);
break;
End;
End;
If not ok then
Writeln(fo,s);
End;

Procedure Start;
Var i:word;
Begin
assign(fi,'input.txt');reset(fi);
assign(fo,'output.txt');rewrite(fo);
While not seekeof(fi) do
Begin
Readln(fi,n);
if n<>0 then
Begin
gtmax:=0;s:=0;
for i:=1 to n do
Begin
Read(fi,a[i]);
s:=s+a[i];
if a[i]> gtmax then
gtmax:=a[i];
End;
Q_sort(1,n);
Tinh;
End;
End;
Close(fi);Close(fo);
End;

Begin
Start;
End.

9
521521521

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 104

4
1234
0
(Li gii ca bn Tng Hi Anh - Hi Dng - TP. Hi Phng)

Bi 49/2001 - Mt cht nhanh tr


(Dnh cho hc sinh Tiu hc)
Theo gi thit khi chia A v lp phng ca A cho mt s l bt k th nhn c s d
nh nhau, tc l: A3 (mod N) = A (mod N), y N s l bt k, chn N l sao cho N >
A3 th ta phi c A3= A suy ra A=1.
Vy ch c s 1 tho mn iu kin ca bi ton.

Bi 50/2001 - Bi ton i mu bi
(Dnh cho hc sinh THCS v PTTH)
Program ba_bi;
Uses crt;
var v,x,d:integer;
BEGIN
Clrscr;
writeln('v x d ?(>=0)');
readln(v,x,d);
if ((v-x)mod 3 =0)and((x+d)*(v+d)<>0) then
while (v+x)<>0 do
begin
d:=d-1+3*((3*v*x)div(3*v*x-1));
x:=x+2-3*((3*x)div(3*x-1));
v:=v+2-3*((3*v)div(3*v-1));
writeln('>> ',v,' ',x,' ',d);
end
else writeln('Khong duoc !');
readln;
END.
(Li gii ca bn:Nguyn Quang Trung)

Bi 51/2001 - Thay th t
(Dnh cho hc sinh THCS v PTTH)
program thaythetu;
var
source,des:array[1..50]of string;
n:byte;
procedure init;
var
i:byte;
s:string;
f:text;
begin
assign(f,'input2.txt');
reset(f);
n:=0;
while not eof(f) do
begin
readln(f,s);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 105

inc(n);
while (s<>'')and(s[1]=' ') do
delete(s,1,1);
if i>0 then
begin
i:=pos(' ',s);
des[n]:=copy(s,1,i-1);
while (i<=length(s))and(s[i]=' ') do
i:=i+1;
source[n]:=copy(s,i,length(s)-i+1);
end;
end;
end;

procedure replace;
var
f,g:text;
s:string;
i,k:byte;
begin
assign(f,'input1.txt');
reset(f);
assign(g,'kq.out');
rewrite(g);
while not eof(f) do
begin
readln(f,s);
for k:=1 to n do
for i:=1 to length(s)-length(des[k])+1 do
if des[k]=copy(s,i,length(des[k])) then
begin
delete(s,i,length(des[k]));
insert(source[k],s,i);
i:=i+length(source[k]);
end;
writeln(g,s);
end;
close(f);
close(g);
end;

begin
init;
replace;
end.

Bi 52/2001 - Xc nh cc t gic ng h trong ma trn


(Dnh cho hc sinh THCS v PTTH)
uses crt;
var s,n,i,k,j,a1,a2,b1,b2:integer;
chon,mau:byte;
a:array[1..100,1..100]of integer;
{----------------------------}
procedure nhap;
begin
write('nhap n>=2:');readln(n);
for i:=1 to n do

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 106

for j:=1 to n do
begin
write('nhap a[',i,'j]:');
readln(a[i,j]);
end;
end;
{----------------------}
procedure tinh;
begin
clrscr;
nhap;
s:=0;
for i:=1 to n-1 do
for j:=1 to n-1 do
if ((a[i,j]<a[i,j+1])and(a[i,j+1]<a[i+1,j+1])and(a[i+1,j+1]<a[i+1,j]))
or((a[i,j+1]<a[i+1,j+1])and(a[i+1,j+1]<a[i+1,j])and(a[i+1,j]<a[i,j]))
or((a[i+1,j+1]<a[i+1,j])and(a[i+1,j]<a[i,j])and(a[i,j]<a[i,j+1]))
or((a[i+1,j]<a[i,j])and(a[i,j]<a[i,j+1])and(a[i,j+1]<a[i+1,j+1]))
then inc(s);
writeln;
writeln;
writeln;
writeln('So luong tu giac dong ho la:',s);
readln;
end;
{-----------------}
procedure max;
var t:integer;
begin
writeln('Nhap n>=2:');readln(n);
i:=1;
a1:=1;a2:=n;
b1:=1;b2:=n;
mau:=0;
t:=0;
while i<=n*n do
begin
for k:=a1 to a2 do
begin
a[b1,k]:=i;
gotoxy(5*k,b1);
inc(mau);
if mau>15 then mau:=1;
textcolor(mau);
write(i);
delay(70);inc(i);
end;
for k:=b1+1 to b2+t do
begin
a[k,a2]:=i;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 107

gotoxy(5*(a2),k);
inc(mau);
if mau>15 then
mau:=1;
textcolor(mau);
write(i);
delay(70);
inc(i);
end;
for k:=b2+t downto b1+1 do
begin
a[k,b2]:=i;
gotoxy(5*(b2-1),k);
inc(mau);
if mau>15 then mau:=1;
textcolor(mau);
write(i);
delay(70);
inc(i);
end;
for k:=a2-2 downto a1 do
begin
a[b1+1,k]:=i;
gotoxy(5*k,b1+1);
inc(mau);
textcolor(mau);
write(i);
delay(70);
inc(i);
end;
dec(a2,2);
dec(b2,2);
inc(t,2);
inc(b1,2);
end;
if n>2 then s:=3*(n-2) else s:=1;
writeln;writeln;
writeln('Bang dong ho max');writeln;
writeln('Voi ma tran vuong cap ',n,'thi so luong tu giac dong ho lon nhat la:',s);
readln;
End;
{------------------}
procedure min;
begin
clrscr;
writeln('n>=2:');readln(n);
i:=1;
b1:=1;
while i<=n*n do
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 108

for k:=1 to n do
begin
a[b1,k]:=i;
inc(mau);
if mau>15 then mau:=1;
textcolor(mau);
gotoxy(5*k,b1);
write(i);
delay(70);
inc(i);
end;
inc(b1);
end;
writeln;writeln;writeln('Bang tren s co gia tri=0');
readln;
End;
{------------------------------}
BEGIN
Clrscr;
repeat
textcolor(white);
writeln('1:cau a (Tinh so luong S)');
writeln('2:cau b (Lap bang co S lon nhat)');
writeln('3:cau c (Lap bang co S nho nhat)');
writeln('4:thoat');
writeln('Chon chuc nang:');readln(chon);
case chon of
1: begin
clrscr;
tinh;
end;
2: begin
clrscr;
max;
end;
3: begin
clrscr;
min;
end;
end;{of Case}
clrscr;
until chon=4;
END.
(Li gii ca bn:Nguyn Vit Ho)

Bi 53/2001 - Lp lch thng k o


(Dnh cho hc sinh THCS v PTTH)
(* Tat ca cac lich deu la lich ki ao *)
Program bai 53;
uses crt;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 109

Const out='lichao.out';
Type mang=array[1..6,1..7] of integer;
Var a:mang;
i,j,dem:integer;
s:real;
f:text;
(*--------------------------------------*)
PROCEDURE Viet;
Var i,j:integer;
Begin
inc(dem);
writeln(f,'Kha nang thu ',dem);
for i:=1 to 6 do
begin
for j:=1 to 7 do
if a[i,j]<>0 then write(f,a[i,j]:3)
else write(f,'':3);
writeln(f);
end;
writeln(f);
End;
(*------------------------------------------*)
PROCEDURE Laplich(k,t:integer);
Var i,j,i1:integer;
Begin
for i1:=k to t+k-1 do
begin
j:=i1 mod 7;
i:=i1 div 7;
if j=0 then
begin
j:=7;
dec(i);
end;
a[i+1,j]:=i1-k+1;
end;
viet;
End;
(*-------------------------------------------*)
PROCEDURE Xuli;
Var i,j,k,t:integer;
Begin
for k:=1 to 7 do
for t:=28 to 31 do
begin
fillchar(a,sizeof(a),0);
Laplich(k,t);
end;
End;
(*---------------------------------------------*)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 110

BEGIN
clrscr;
assign(f,out);
rewrite(f);
dem:=0;
Xuli;
close(f);
END.
(Li gii ca bn: Ngc Sn)

Bi 54/2001 - Bn hy gch s
(Dnh cho hc sinh Tiu hc v THCS)
Chng ta vit ra 10 s nguyn t u tin:
2 3 5 7 11 13 17 19 23 29
l s c 16 ch s, c th chng minh khng kh khn lm rng sau khi gch i 8 ch
s th s nh nht c th c l: 11111229; cn s ln nht c th c l: 77192329.
Tht vy:
a. Gch i 8 ch s, s cn li l mt s c 8 ch s l nh nht (gi nguyn th t
ban u). Nhn vo dy s trn ta thy s 1 l nh nht, c nm ch s 1 v sau
ch s 1 th nm ny li cn nhiu hn 3 ch s khc na. Do , 5 ch s u ca
s cn tm chc chn phi l 5 ch s 1. L lun tng t, tm c 3 ch s cn
li.
b. Tng t nh th: ch s 9 l ln nht, nhng sau ch s 9 u tin li ch cn li 4
ch s (m ta cn gi li s c 8 ch s), nn ta khng th chn s 9 l ch s ng
u trong 8 ch s cn tm. Ch s ln th hai l 7, c hai ch s 7, tt nhin ta
chn ch s 7 u tin (v sau ch s 7 th 2 ch cn li 6 ch s). L lun tng t,
ta tm c ch s th hai trong 8 ch s cn tm cng l ch s 7, v 6 ch s cn
li phi tm tt nhin l 6 ch s sau ch s 7 ny.

Bi 55/2001 - Bi ton che mt mo


(Dnh cho hc sinh THCS v PTTH)
Program Che_Mat_meo;
Uses crt;
Const td=200;
Var i,j,n:integer;
out:string;
f:text;

Procedure Xuli;
Begin
for i:=1 to n do
begin
gotoxy(15,i+3);
for j:=1 to n do
begin
if (odd(i))and(odd(j)) then
begin
textcolor(11);
if out<>'' then write(f,'M ')
else

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 111

begin
write('M ');
delay(td);
end;
end
else
begin
textcolor(14);
if out<>'' then write(f,'o ')
else
begin
write('o ');
delay(td);
end;

end;
end;
writeln(f);
end;
End;

BEGIN
Clrscr; textcolor(2);
Write('Nhap n= ');
Readln(n);
if n<=20 then out:=''
else
begin
out:='matmeo.inp';
writeln('Mo File meo.inp de xem ket qua');
end;
Assign(f,out);
Rewrite(f);
writeln(f,'(Chu M Ki hieu cho con meo, chu o ki hieu cho quan co)');
Xuli; writeln(f);
Writeln(f,'Tong cong co ',sqr((n+1) div 2),' con meo');
Close(f);
Readln;
END.
(Li gii ca bn Ngc Sn - Qung Ninh)

Bi 56/2001 - Chia li
(Dnh cho hc sinh PTTH)
Program Chia_luoi ;
Uses Crt ;
Const Fi = 'LUOI.INP';
Fo = 'LUOI.OUT';
Var A : Array[1..20,1..20]Of Integer ;
B : Array[1..20,1..20]Of 0..1 ;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 112

Px,Py: Array[1..4] Of ShortInt ;


M,N,S,S1,S2 : LongInt ;
F : Text ;
Procedure Read_Input ;
Var i,j :Integer;
Begin
Clrscr ; S:= 0 ;
Assign(F,Fi) ;Reset(F) ;
Readln(F,M,N);
For i:=1 to M do
Begin
For j:=1 to N do
Begin
Read(F,A[i,j]);
S:=S+A[i,j];
End;
Readln(F);
End;
Close(F);
End;

Procedure Innit ;
Begin
S1 := S div 2;
Px[1]:= 0 ;Px[2]:= 0 ;Px[3]:=1 ;Px[4]:=-1 ;
Py[1]:= 1 ;Py[2]:=-1 ;Py[3]:=0 ;Py[4]:= 0 ;
End ;

Procedure Write_Output ;
Var i,j :Integer;
Begin
Assign(F,Fo); ReWrite(F);
For i:=1 to M do
Begin
For j:=1 to N do
Write(F,B[i,j],' ');
Writeln(F);
End;
Close(F);Halt;
End;

Function Ktra(x,y : Integer) : Boolean ;


Begin
Ktra:= False ;
If (x in [1..M]) And (y in [1..N]) And
(B[x,y] = 0 ) Then Ktra := True ;
End;

Procedure Try(x,y:Integer ;Sum :LongInt);


Var i :Integer ;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 113

Begin
For i:=1 to 4 do
If Ktra(x+Px[i],y+Py[i]) Then
Begin
x := x + Px[i] ;
y := y + Py[i] ;
Sum := Sum + A[x,y];
B[x,y] := 1;
If Sum = S2 Then Write_Output ;
Try(x,y,Sum) ;
Sum := Sum - A[x,y];
B[x,y] := 0;
x := x - Px[i] ;
y := y - Py[i] ;
End ;
End;

Procedure Run ;
Var i,j : Integer ;
Begin
Read_Input ;Innit ;
For i:=1 to M do
For j:=1 to N do
If A[i,j]>= S1 Then
Begin
Fillchar(B,SizeOf(B),0);
B[i,j]:=1;
Write_Output;
End ;
For S2 := S1 downto 1 do
Begin
Fillchar(B,SizeOf(B),0);
B[1,1]:=1;
Try(1,1,A[1,1]);
End;
End;

BEGIN
Run;
END.
(Li gii ca bn L Sn Tng - Vnh Phc )

Bi 57/2001 - Chn s
(Dnh cho hc sinh Tiu hc v THCS )
Gi s c m s 1, n s -1 (m, n nguyn dng) theo gi thit:
a) m + n = 2000, suy ra m, n cng tnh chn l.
+ Nu m chn, do n cng chn, ta chn ra m/2 s 1 v n/2 s -1.
+ Nu m l, n l:
m = 2k +1 = k + (k + 1)

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 114

n = 2q +1 = q + (q + 1)
Lun c: k - q = (k+1) - (q+1), do ta s chn k s 1 v q s -1.
Vy ta lun c th chn ra cc s tha mn iu kin ca bi ton.
b) m + n = 2001 -> m v n khng cng tnh chn l.
+ Nu m chn -> n phi l l:
m = 2k = i + j (gi s chn i s 1, gi li j s 1)
n = 2q +1 = t + s (gi s chn t s -1, gi li s s -1)
Theo cch chn ny -> i, j phi cng tnh chn l; t, s khng cng tnh chn l.
Gi s i chn, j chn, t l, s chn, do : i + t j + s, nh vy cch chn ny khng tha
mn. Cc trng hp cn li xt tng t.
Do , vi trng hp ny khng th c cch chn no tha mn iu kin ca bi ton.

Bi 58/2001 - Tng cc s t nhin lin tip


(Dnh cho hc sinh THCS v PTTH)
Program bai58;
Uses crt;
var N:longint;
m,i,dem,a,limit:longint;
procedure Solve;
begin
Writeln('Chia so ',N,':');
limit:=trunc(sqrt(1+8*N)+1) div 2;
for m:=2 to limit-1 do
if ((N-m*(m-1) div 2) mod m =0) then
begin
a:=(N-m*(m-1) div 2) div m;
inc(dem);
writeln('+ Cach thu ',dem,' :');
for i:=a to a+m-1 do
begin
write(' ',i);
if (i-a+1) mod 10=0 then writeln;
end;
writeln;
end;
end;
BEGIN
clrscr;
writeln('Nhap N: ');readln(N);
Solve;
if dem=0 then writeln('Khong the chia!')
else writeln('Co tat ca', dem,' cach chia!');
readln;
END.
(Li gii ca bn Nguyn Quc Qun - Lp 11 T2 - Trng PTTH L Vit Thut - Vinh)

Bi 59/2001 - m s vung

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 115

(Dnh cho hc sinh THCS v PTTH)


Uses crt;
Const Ngang = ngang.inp;
Doc = doc.inp;
Max = 100;
n: integer = 0;
count: integer =0;
Var f1,f2:text;
o,i,j:integer;
a,b,c:array[1..max] of boolean;
BEGIN
clrscr;
Assign(f1,ngang); Assign(f2,doc);
Reset(f1); Reset(f2);
While not eoln(f1) do
begin
Read(f1,o);
Inc(n);
If o=1 then a[n]:=true
else a[n]:=false
end;
Readln(f1);
for i:= 1 to n do
begin
for j:= 1 to n do
begin
Read(f1,o);
If o=1 then b[j]:=true
else b[j]:=false;
end;
Readln(f1);
for j:=1 to n+1 do
begin
Read(f2,o);
If o=1 then c[j]:=true
else c[j] := false
end;
Readln(f2);
for j:=1 to n do
begin
If (a[j] and b[j] and c[j] and c[j+1]) then
inc(count);
end;
a:=b;
end;
Close(f1); Close(f2);
Write('Co', count, hinh vuong!);
Readln;
END.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 116

(Li gii ca bn Nguyn Ch Thc - Lp 10A1 - Khi chuyn Ton Tin - H S phm
H Ni)

Bi 60/2001 - Tm s d ca php chia


(Dnh cho hc sinh Tiu hc)
V 1976 v 1977 l 2 s nguyn lin tip nn nguyn t cng nhau, do s tho mn
iu kin ca bi ton phi c dng:
n = 1976*1977*k +76 (k l s nguyn)
nhng 1976*1977 li chia ht cho 39 nn phn d ca n khi chia cho 39 s l 37 (= 76 -
39).

Bi 61/2001 - Thut ton in s vo ma trn


(Dnh cho hc sinh THCS v PTTH)
Program Bai61;
Uses crt;
Var a:array[2..250,2..250] of -1..1;
n,i,j:integer;
BEGIN
Write('Doc vao n:'); Readln(n);
Fillchar(a, sizeof (a), 0);
for i:=1 to n do
for j:=1 to n do
begin
If (i mod 2 <> 0) and (j mod 2 <> 0) then a[i,i] := 1;
If (i mod 2 = 0) and (j mod 2 = 0) then a[i,i] := -1;
end;
Writeln('Mang da dien la: ');
for i:=1 to n do
begin
for j:=1 to n do Write(a[i,j]:3);
Writeln;
end;
Write('Tong lon nhat la:');
If n mod 2 = 0 then Write(0) else Write(n);
Readln;
END.
(Li gii ca bn Trng c Hnh - 12 Ton Nng Khiu - H Tnh)

Bi 62/2001 - Chn Xu
(Dnh cho hc sinh THCS v PTTH)
Do s xut khi ra nn trong s cc li gii ca bn c gi n to son, c th cc
bn hiu bi theo 2 cch sau y, ta coi nh hai bi ton:
1. Nu theo v d, th ta cn chn du vo xu (khng cn 9 s nh trong xu S, c
th bt mt s s cui ca xu, nhng phi theo th t) php tnh nhn c bng M
cho trc.
2. Ta khng n v d ca ra, yu cu cn chn du vo gia cc s trong xu
'123456789' nhn c kt qu M cho trc.
Sau y l li gii ca bn Nguyn Ch Thc (hiu theo bi ton 1):

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 117

Program Bai62;
Uses crt;
Const fo = 'chenxau.out';
dau: array[1..3] of String[1]= ('', '-', '+');
s:array[1..9] of char=('1','2','3','4','5','6','7','8','9');
Var d:array[1..9] of String[1];
m:longInt;
f:text;
k:integer;
found:boolean;
Procedure Init;
Begin
Write('Cho M=');
Readln(m);
found:=false;
end;
Function tinh(s:string):longint;
Var i,t:longint;
code:integer;
Begin
i:=length(s);
While not(s[i] in ['-','+']) and (i>0) do dec(i);
val(copy(s,i+1,length(s)-i),t,code);
If i=0 then begin tinh:=t; exit; end
else
begin
delete(s,i,length(s)-i+1);
If s[i]='+' then tinh:=t+tinh(s);
If s[i]='-' then tinh:=tinh(s)-t;
end;
End;
Procedure Test(i:integer);
Var st:string; j:integer;
Begin
st:='';
For j:=1 to i do st:=st+d[j]+s[j];
If Tinh(st) = m then begin writeln(f,st); found:=true; end;
End;
Procedure Try(i:integer);
Var j:integer;
Begin
for j:=1 to 3 do
begin
d[i]:=dau[j]; Test(i);
If i<9 then try(i+1);
end;
End;
BEGIN
Clrscr;
Init;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 118

Assign(f,fo);Rewrite(f);
for k:=1 to 2 do
begin
d[1]:=dau[k];
Try(2);
end;
If not found then write(f,'khong co ngiem');
Close(f);
END.

T li gii trn ca bn Thc, tho mn yu cu ca bi ton 2, trong th tc Try cn


sa li nh sau:
Procedure Try(i:integer);
Var j:integer;
Begin
for j:=1 to 3 do
begin
d[i]:=dau[j];
If i<9 then try(i+1);
If i=9 then Test(i);
end;
End;

Bi 63/2001 - Tm s nh nht
(Dnh cho hc sinh Tiu hc)
a. S chia ht cho 9 nn tng cc ch s ca n phi chia ht cho 9. Ta thy tng 0 +
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45 chia ht cho 9. Vy s nh nht bao gm tt c
cc ch s 0, 1, 2, ..., 9 m chia ht cho 9 l: 1023456789.
b. S ny chia ht cho 5 nn tn cng phi l 0 hoc 5. Nu tn cng l 5 th s nh nht
s l 1023467895 cn nu s tn cng l 0 th s nh nht s l123457890.
So snh hai s trn, suy ra s nh nht phi tm l: 1023467895
c. Mt s chia ht cho 20, do phi chia ht cho 10. Suy ra s phi l s nh nht
tn cng l 0. Mt khc, ch s hng chc ca s phi l mt s chn. V vy ta tm
c s phi tm l 1234567980.

Bi 64/2001 - i ma trn s
(Dnh cho hc sinh THCS v PTTH)
Program DoiMT;
Uses Crt;
Const nmax=50;
inp='INPUT.TXT'; {Du lieu duoc nhap vao file input.txt}
Type Mang=array [1..nmax,1..nmax] of real;
Var a,b,c: Mang;
n,i,j: integer;

Procedure Nhap;
Var i,j: integer;
f: text;
Begin
Assign(f,inp); Reset(f);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 119

Readln(f,n);
For i:=1 to 2*n do
begin
For j:=1 to 2*n do Read(f,c[i,j]);
Readln(f);
end;
Close(f);
End;
Procedure Xuat(a: Mang);
Var i,j: integer;
Begin
For i:=1 to 2*n do
begin
For j:=1 to 2*n do Write(a[i,j]:8:2);
Writeln;
end;
End;
BEGIN
Nhap;
For i:=1 to n do
For j:=1 to n do
begin
a[i+n,j+n]:=c[i,j];
a[i,j+n]:=c[i+n,j];
a[i,j]:=c[i+n,j+n];
a[i+n,j]:=c[i,j+n];
b[i,j]:=c[i+n,j];
b[i,j+n]:=c[i,j];
b[i+n,j+n]:=c[i,j+n];
b[i+n,j]:=c[i+n,j+n];
end;
ClrScr;
Xuat(c); {mang ban dau}
Writeln;
Xuat(a);
Writeln;
Xuat(b);
Readln;
END.
(Li gii ca bn L Thanh Tng - Vnh Yn - Vnh Phc)

Bi 65/2001 - Li vung v hn
(Dnh cho hc sinh THCS v PTTH)
Program bai65;
uses crt;
var
a:array[1..100,1..100] of integer;
b,i,j,n,m,k:integer;
f:text;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 120

t:boolean;
Begin
clrscr;
write('Nhap so n: '); readln(n);
write('Nhap so m: '); readln(m);
for i:=1 to m do
for j:=1 to n do a[i,j]:=-1;
for i:=m downto 1 do
for j:=1 to n do
begin
b:=-1;
repeat
inc(b); t:=true;
for k:=1 to n do if a[i,k]=b then t:=false; {kt hang}
for k:=1 to m do if a[k,j]=b then t:=false; {kt cot}
until t;
a[i,j]:=b;
end;
assign(f,'KQ.TXT');
rewrite(f);
for i:=1 to m do
begin
for j:=1 to n do write(f,a[i,j]:5);
writeln(f);
end;
close(f);
write('Mo file KQ.TXT de xem ket qua!');
readln;
END.
(Li gii ca bn Nguyn Trng c Tr)

Bi 66/2001 - Bng s 9 x 9
(Dnh cho hc sinh Tiu hcv THCS)
Ta s in vo cc ct th nm cc s ln nht c th c. Nu s ln nht trong
cc ct cn li (cha in vo bng) l a, th s ln nht c th in vo ct th nm l
a- 4 v cc s phi in theo th t tng dn theo hng m sau ct th 5 cn c 4 ct
na. Ta thc hin in cc s gim dn t 81 vo na phi ca bng trc, sau d
dng in vo na cn li vi nhiu cch khc nhau:

1 2 3 4 77 78 79 80 81
5 6 7 8 72 73 74 75 76
9 10 11 12 67 68 69 70 71
13 14 15 16 62 63 64 65 66
17 18 19 20 57 58 59 60 61
21 22 23 24 52 53 54 55 56
25 26 27 28 47 48 49 50 51
29 30 31 32 42 43 44 45 46
33 34 35 36 37 38 39 40 41
Program bai66;
Uses ctr ;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 121

Var i,j : integer ;


Begin
Clsscr;
for i:= 1 to do
begin
for j:= 1to 4 do write (4*(i-1) + j :3);
for j:= 0 to 4 do write (81-4*i-(i-1)+j :3) ;
Writeln;
end ;
Write (tong cac so o cot 5: ,(37+77)*9div2);
Readln
End.
(Li gii ca bn Nguyn Ch Thc - Lp 11A1 - Khi PTCTT - HSPHN - Thn i
ng - x Thu Phng - T Lim - H Ni)

Bi 67/2001 - V cc php bin i "Nhn 2 tr 1"


(Dnh cho hc sinh THCS v PTTH)
bin i ma trn A thnh 0, ta bin i tng ct thnh 0
Xt mt ct bt k c n s a1, ..., an (ai >= 0)
t X = max(a1, ..., an).
- Bc 1:
+ Nu dy a1, ..., an c mt s 0 v mt s khc 0, dng y v khng th a A v
0;
- Bc 2:
+ Nu dy a1, ..., an c ai = 0 (i = 1..n) th ct ny c bin i xong, qua ct tip
theo,
+ Nu khng th ai = 2ai nu 2ai <= X (nhn hng c cha s ai ln 2), tip tc thc
hin n khi khng nhn c na, qua bc 3;
- Bc 3:
X:= X-1;
ai:= ai-1;
Quay li bc 2.
y khng phi l li gii tt u nhng rt n gin, d dng ci t (vic vit chng
trnh tng i n gin)
Nhn xt: Bi ny thc s d nu ch dng li mc tm thut ton? Nu t li iu
kin l c th nhn hng, ct cho 2, tr hng, ct cho 1, tm li gii ti u vi gii hn
ca M, N th hay hn nhiu.
(Li gii ca bn V L An - Lp 11T2 - L Khit - Qung Ngi)
Thut ton ca bn V L An rt ng. Song trn thc t thut ton ny cn mt im
cha chun v nu cc s ca mng s th nh, s th ln th thut ton ny mt rt nhiu
bc. Vic nhn c th gy ra trn s.
V d:
23
1 100 1
100 1 100
s bc s rt ln.
Nhng thut ton ny trn l thuyt l gii c. Chng trnh theo thut ton trn.
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
program bai67_bien_doi_mang; {Author : Nguyen Van Chung}

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 122

uses crt;
const max =100;
fi ='bai67.inp';
fo ='bai67.out';
var a :array[1..max,1..max]of longint;
m,n :integer;

procedure docf;
var f :text;
i,j :integer;
begin
assign(f,fi);
reset(f);
read(f,m,n);
for i:=1 to m do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;

procedure lam;
var f :text;
i,j,ma,mi,k :longint;
begin
assign(f,fo);
rewrite(f);
for j:=1 to n do
begin
ma:=0;mi:=maxlongint;
for i:=1 to m do
begin
if a[i,j]>ma then ma:=a[i,j];
if a[i,j]<mi then mi:=a[i,j];
end;
if (ma>0)and(mi=0) then
begin
rewrite(f);
writeln(f,'No solution');
break;
end;
repeat
for i:=1 to m do
begin
while a[i,j]*2<=ma do
begin
for k:=1 to n do a[i,k]:=a[i,k]*2;
writeln(f,'nhan 2 dong :',i);
end;
a[i,j]:=a[i,j]-1;
end;
dec(ma);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 123

writeln(f,'tru 1 cot :',j);


until ma=0;
end;
close(f);
end;

BEGIN
docf;
lam;
END.

Bi 68/2001 - Hnh trn v bng vung


(Dnh cho hc sinh PTTH)
+ Tnh s vung b ct bi hnh trn:
Nu trc to l (0,0) th tm vng trng c to (n,n). Xt 1 phn 4 vng trn t 6
gi n gi b ct l c nh (i,j) nm ngoi vnh trn v 1 n 3 nh (i+1, j), (i,
j+1), (i+1, j+1) trong vng trn. Do tnh i xng ta ch cn tnh s ca 1 phn 4 vng
trn ri nhn vi 4. Tuy nhin nu nhn xt k hn ta thy vi n = 2, s b ct l 12,
khi n tng 1 n v, s b ct tng ln 8 . Do ta c th tnh thng s b ct bng
cng thc : S b ct =12 + (n-2)*8
+ Tnh s nm trong vng trn:
Cng do tnh i xng ta ch cn tnh s nm trong 1 phn 4 vng trn ri nhn vi 4,
nm trong vng trn khi tt c 4 nh nm trong vng trn.
Chng trnh Pascal
Uses Ctr;
Const S1 =INPUT.TXT;
S2=OUTPUT.TXT;
VarF1F2: text;
I,J,N : word;
Dem :longint;
FunctionTrong(X,Y: longint): boolean;
Begin
Trong:= 4*(sqr(X-N)+sqr(Y-N))<=sqr(2*N-1);
End
BEGIN
Clrscr;
Assign(F1,S1);
Reset(F1);
Assign(F2,S2);
Rewrite(F2);
While not eof(F1) do
Begin
Readln(F1,N);
Write(F2,N=,=>,12+((N-2)*8));
Dem:= 0;
For I:= 0 to N-1 do
For J:= 0 to J-1 do
If Trong (I,J) and Trong (I+1,J) and Trong (I,J+1) and Trong (I+1, J+1) then(Dem)
Writeln(F2,,Dem*4);
End;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 124

Close(F1);
Close(F2);
End.
(Li gii ca bn Lm Tn Minh Tm - 12 Tin trng PTTH Chuyn Tin Giang- Tin
Giang)

Bi 69/2001 - Bi s ca 36
(Dnh cho hc sinh Tiu hc)
Mt s ng thi chia ht cho 4 v 9 th s chia ht cho 36 (v 4 v 9 nguyn t cng
nhau: (4, 9) = 1).
Ta thy, tng ca tt c cc s t 1 n 9 = 1 + 2 + ... + 9 = 45 chia ht cho 9.
Mt s chia ht cho 4 khi v ch khi hai ch s cui cng ca n chia ht cho 4. M ta
cn tm s nh nht chia ht cho 36, do s phi l s nh nht c y cc ch
s t 1 n 9 v hai s cui cng ca n phi l mt s chia ht cho 4. Vy s phi tm
l: 123457896

Bi 70/2001 - M ho theo kho


(Dnh cho hc sinh THCS v THPT)
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
uses crt;
Const MaxVal=256;
Var
n:Integer; S,KQ:String;
a:array[0..MaxVal] of Integer;
Procedure InPut;
Var i:Integer;
Begin
CLrscr;
Write('Nhap N=');Readln(n);
For i:=1 to n do
Begin Write('a[',i,']=');Readln(a[i]); End;
Write('Nhap Xau:');Readln(S);
End;
Procedure Main;
Var i,j:Integer;
Begin
if (Length(S) Mod n) <>0 then
For i:=1 to n-(Length(S) Mod n) do S:=S+' ';
KQ:='';
For i:=0 to (Length(S) Div n)-1 do
For j:=(n*i)+1 to n*(i+1) do
KQ:=KQ+S[a[j-(n*i)]+(n*i)];
Writeln('Xau Ma Hoa: ',KQ);
End;
Begin
InPut;
Main;
Readln;
End.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 125

(Li gii ca bn Nguyn Cao Thng - Lp 12A2 chuyn Vnh Phc - tnh Vnh Phc)

Bi 71/2001 - Thc hin php nhn


Program Thuc_hien_phep_nhan;
Uses Crt;
Type so = 0..9;
Var a,b,c,d: string;
can,i: byte;
Procedure Nhap;
Begin
Clrscr;
Write('Nhap so a : '); Readln(a);
Write('Nhap so b : '); Readln(b);
Writeln('Phep nhan a va b : ');
can:=length(a)+length(b)+1;
Writeln(a:can);
Writeln('X');
Writeln(b:can);
For i:=1 to can do Write('-');
Writeln;
End;
Procedure Nhan(a: string; k: so);
Var nho: so;
x,i: byte;
Begin
nho:=0;
c:='';
For i:=length(a) downto 1 do
Begin
x:=(ord(a[i])-48)*k+nho;
nho:=x div 10;
c:=chr((x mod 10)+48)+c;
End;
If nho>0 then c:=chr(nho+48)+c;
Writeln(c:can);
can:=can-1;
End;
Procedure Cong(var c,d: string; z:byte);
Var nho: so;
x,i: byte;
Begin
for i:=1 to length(b)-z do c:=c+'0';
If length(c) > length(d) then
For i:=1 to length(c)-length(d) do d:='0'+d
Else
For i:=1 to length(d)-length(c) do c:='0'+c;
nho:=0;
For i:=length(d) downto 1 do
Begin
x:=ord(d[i])+ord(c[i])-96+nho;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 126

d[i]:=chr((x mod 10)+48);


nho:=x div 10;
End;
If nho>0 then d:='1'+d;
End;
Begin
Nhap;
d:='';
For i:=length(b) downto 1 do
Begin
Nhan(a,ord(b[i])-48);
Cong(c,d,i);
End;
can:=length(a)+length(b)+1;
For i:=1 to can do Write('-');
Writeln;
Writeln(d:can);
Readln;
End.
(Li gii ca bn ng Trung Thnh - PTTH Nguyn Du - Bun M Thut)

Bi 72/2001 - Bin i trn li s


const Inp ='bai72.inp';
Out ='bai72.out' ;
maxn=100;
Var dem, n, i, j, d:integer; f:text;
a:array[0..maxn+1,0..maxn+1] of Boolean;
Procedure Init;
Var t:integer;
Begin
Fillchar(a, Sizeof(a), true);
Assign(f, inp); reset(f);
dem:=0;
Readln(f, n);
for i:= 1 to n do
for j:=1 to n do
begin
read(f, t);
If t=1 then a[i,j]:=true else begin a[i,j]:=false;inc(dem); end;
If j=n then readln(f);
end;
Close(f);
End;
Procedure Solve1;
Begin
for i:=1 to n do
for j:=1 to n do
begin
If not a[i,j] then
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 127

a[i,j]:= not (a[i,j-1] xor a[i,j+1] xor a[i-1,j] xor a[i+1,j]);


If a[i,j] then begin dec(dem);writeln(f,i,' ',j) end
end;
end;
End;
Procedure Solve2;
Begin
for i:=1 to n do
for j:=1 to n do
If not a[i,j] then
begin
If i >1 then
begin
a[i-1,j]:=false;
inc(dem);
writeln(f, i-1, ' ', j);
end
else
If i <n then
begin
a[i+1,j]:=false;
inc(dem);
writeln(f, i+1, ' ', j);
end
else
If j >1 then
begin
a[i,j-1]:=false;
inc(dem);
writeln(f, i, ' ', j-1);
end
else
begin a[i,j+1]:=false; inc(dem); writeln(f, i, ' ', j+1) end;
exit;
end;
End;
BEGIN
Init;
Assign(f,out); rewrite(f);
While dem >0 do
begin
writeln(dem); d:=dem; solve1;
If (d=dem) and (dem >0) then solve2;
end; Close(f);
END.
(Li gii ca bn Nguyn Ch Thc - khi PTCTT - HSP - H Ni)

Bi 73/2001 - Bi ton chui s


(Dnh cho hc sinh Tiu hcv THCS)
Hai s cui l 59 v 65.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 128

Gii thch: Chui s c to ra t vic cng cc s nguyn t ( hng trn) vi cc s


khng phi l nguyn t (hng di), c th nh sau:

Bi 74/2001 - Hai hng s k o


(Dnh cho hc sinh THCS v PTTH)
Tng cc s t 1 n 2n: 1 + 2 + + 2n = (2n*(2n+1))/2 = n*(2n+1).
Do , hai hng c tng bng nhau th tng ca mi hng phi l: (n*(2n+1))/2, nh
vy n phi l s chn th mi tn ti hai hng s k o.
Tng ca n ct bng nhau nn tng ca mi ct s l: 2n+1.
ng vi mt s A[i] (A[i] = 1, 2, , 2n) ch tn ti duy nht mt s B[i] = 2n -(A[i] -1)
sao cho: A[i] + B[i] = 2n + 1;
Ton b chng trnh li gii:
Program bai74;
uses crt;
var n:byte;
a:array[1..100]of 0..1;
th:array[0..50]of byte;
ok:boolean;
s:integer;
Procedure xet;
var i,j,tong:integer;
duoc:boolean;
Begin
tong:=0;
for j:=1 to n do tong:=tong+th[j];
if tong=s div 2 then
begin
duoc:=true;
for j:=1 to n-1 do
for i:=j+1 to n do
if th[j]+th[i]=(s div n) then duoc:=false;
if duoc then
begin
for i:=1 to n do write(th[i]:3);
writeln;
for i:=1 to n do write(((s div n)-th[i]):3);
ok:=true;
end;
end;
end;
Procedure try(i:byte);
var j:byte;
Begin
if i>n then xet
else if not ok then

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 129

for j:=th[i-1]+1 to 2*n do


begin
th[i]:=j;
try(i+1);
end;
End;
Procedure xuli;
var i:byte;
Begin
th[0]:=0;
ok:=false;
s:=n*(2*n)+1;
try(1);
if ok=false then write('Khong the sap xep');
End;
BEGIN
clrscr;
write('Nhap n:');readln(n);
if n mod 2 =1 then writeln('Khong the sap xep')
else xuli;
readln;
END.
(Li gii ca bn Hong Phng Nhi - PTTH chuyn L T Trng - Cn Th)

Nhn xt: Cch lm ca bn Hong Phng Nhi - PTTH chuyn L T Trng - Cn


Th dng thut ton duyt nn chy khng c ln. Vi N = 20 th chng trnh chy
rt lu, nu N ln hn na th khng th ra c kt qu. Bn c th ci tin chng
trnh ny bng cch kim tra cc iu kin ngay trong qu trnh duyt gim bt thi
gian duyt.
Cch lm khc dng thut ton chia ko chy rt nhanh vi N<35.
Tng cc s t 1 n 2n: 1 + 2 + .. + 2n = (2n*(2n+1))/2 = n*(2n+1).
Do , hai hng c tng bng nhau th tng ca mi hng phi l: (n*(2n+1))/2, nh
vy n phi l s chn th mi tn ti hai hng s k o.
Tng ca n ct bng nhau nn tng ca mi ct s l: 2n+1.
ng vi mt s A[i] (A[i] = 1, 2,.., 2n) ch tn ti duy nht mt s B[i] = 2n -(A[i] -1)
sao cho: A[i] + B[i] = 2n + 1
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
uses crt;

const max =35;


fi = 'bai74.inp';
fo = 'bai74.out';

var d : array[0..max*(2*max+1) div 2] of byte;


tr : array[1..max,0..max*(2*max+1) div 2]of byte;
kq : array[1..max]of integer;
n,sum : integer;
ok : boolean;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 130

procedure docf;
var f :text;
begin
ok:=false;
assign(f,fi);
reset(f);
read(f,n);
close(f);
end;

procedure lam;
var i,j :integer;
begin
sum:=n*(2*n+1) div 2;
fillchar(d,sizeof(d),0);
fillchar(tr,sizeof(tr),0);
d[0]:=1;
for i:=1 to n do
begin
for j:=sum-i downto 0 do
if d[j]=1 then
begin
d[j+i]:=2;
tr[i,j+i]:=1;
end;

for j:=sum-(2*n+1-i) downto 0 do


if d[j]=1 then
begin
d[j+2*n+1-i]:=2;
tr[i,j+2*n+1-i]:=2;
end;
for j:=0 to sum do
if d[j]>0 then dec(d[j]);
end;
ok:=(d[sum]=1);
end;

procedure ghif;
var f :text;
i,j :integer;
begin
assign(f,fo);
rewrite(f);
if ok=false then write(f,'No solution')
else
begin
i:=sum;j:=n;
while i>0 do
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 131

if tr[j,i]=1 then kq[j]:=j else kq[j]:=2*n+1-j;


i:=i-kq[j];
dec(j);
end;
for j:=1 to n do write(f,kq[j]:6);
writeln(f);
for j:=1 to n do write(f,(2*n+1-kq[j]):6);
end;
close(f);
end;

BEGIN
docf;
if n mod 2=0 then lam;
ghif;
END.

Bi 75/2001 - Tr chi Tch - Tc vung


(Dnh cho hc sinh THCS v PTTH)
(* Thuat toan:
Chia ban co lam 4 huong: Dong , Tay , Nam , Bac. Ta co cach di sau:
i) Luon di theo o lien canh voi o truoc
ii) Di theo huong khong bi chan. Vi du: o buoc 1 neu bi chan o huong Dong
thi di theo huong nguoc lai la huong Tay. Di theo huong Tay den khi huong Tay bi chan
thi di theo huong Bac hoac Nam.
Trong khi di ta luon de y 2 dieu kien sau:
1. Neu co 3 o da lap thanh 3 dinh cua 1 hinh vuong ma o thu 4 chua bi di
thi ta se di o thu 4 va gianh duoc thang loi.
2. Neu co 2k+1(k>=1) o lien canh lien tiep thi kiem tra co the gianh thang
loi bang nuoc do^i khong? Nuoc do^i la nuoc ta danh vao 1 o nhung co the co duoc 2
hinh vuong. vi du: co 3 o (1,1);(1,2);(1,3) thi ta co the danh nuoc doi bang cach danh
vao o (2,2) nhu vay ta co kha nang hinh thanh 2 o vuong. Nhung sau 1 nuoc di doi thi
chi duy nhat chan duoc 1 o vuong, ta co the danh nuoc tiep theo de hinh thanh o vuong
con lai va gianh duoc thang loi.
Bang cach danh nhu vay ban co the chien thang trong vong toi da la 10 nuoc.*)
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
CONST Min=-50;
Max=50;
TYPE Ma=Array[Min..Max,Min..Max] of char;
diem= Record
hg,cot:Integer;
End;
Qu=Array[1..Max] of diem;
VAR dmay,dng,dc1,dc2:diem;
hgdi:Integer; (*1:B ; 2:D ; -1:N ; -2:T*)
fin,ok:Boolean;
A:Ma;
Q,Qc:Qu;
dlt,dq,cq:Integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 132

Procedure HienA(hgd,hgc,cotd,cotc:Integer);
Var i,j:Integer;
Begin
For i:=hgd to hgc do
Begin
For j:=cotd to cotc do Write(A[i,j],' ');
Writeln;
End;
End;
Procedure finish(d:diem);
Begin
A[d.hg,d.cot]:='x';
HienA(-10,10,-10,10);
Writeln('Ban da thua! An ENTER de ket thuc chuong trinh');
Readln;
Halt;
End;
Procedure Init;
Begin
Fillchar(A,sizeof(A),'.');
fin:=false;
Writeln('Gia thiet bang o vuong co: 101 hang (-50 -> 50)');
Writeln(' 101 cot (-50 -> 50)');
Writeln('Gia thiet may luon di nuoc dau tien tai o co toa do (0:0)');
dmay.hg:=0; dmay.cot:=0; A[dmay.hg,dmay.cot]:='X';
HienA(-10,10,-10,10);
dlt:=1;
End;
Procedure Sinh(d1:diem; Var d2:diem; hgdi,k:integer);
Var h,c:Integer;
Begin
h:=d1.hg; c:=d1.cot;
Case hgdi of
1: Dec(h,k);
2: Inc(c,k);
-1: Inc(h,k);
-2: Dec(c,k);
End;
d2.hg:=h; d2.cot:=c;
End;
Function kt(Var d1,d2:diem):boolean;
Var g1,g,g2:diem;
k,p:integer;
Begin
kt:=true;
k:=(dlt-1) div 2;
p:=2 div abs(hgdi);
sinh(dmay,g1,-hgdi,k);
sinh(dmay,g2,-hgdi,2*k);
sinh(g1,g,p,k);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 133

sinh(dmay,d1,p,k);
sinh(g2,d2,p,k);
If (A[d1.hg,d1.cot]='.')and(A[g.hg,g.cot]='.')and(A[d2.hg,d2.cot]='.')then
begin A[g.hg,g.cot]:='x'; HienA(-10,10,-10,10); exit; end;
sinh(g1,g,-p,k);
sinh(dmay,d1,-p,k);
sinh(g2,d2,-p,k);
If (A[d1.hg,d1.cot]='.')and(A[g.hg,g.cot]='.')and(A[d2.hg,d2.cot]='.')then
begin A[g.hg,g.cot]:='x'; HienA(-10,10,-10,10); exit; end;
kt:=false;
End;
Procedure Ngdi;
Begin
Repeat
Write('Nhap toa do diem (hang,cot): '); Readln(dng.hg,dng.cot);
Until
(dng.hg>=Min)and(dng.hg<=Max)and(dng.cot>=Min)and(dng.cot<=Max)and(A[dng.h
g,dng.cot]='.');
A[dng.hg,dng.cot]:='1'; HienA(-10,10,-10,10);
End;
Function Hgchan:Integer;
Var Hgc:Integer;
Begin
If dmay.cot<dng.cot then
Begin
Hgc:=2;
If Hgc=hgdi then Begin Hgchan:=Hgc; Exit; End;
End;
If dmay.cot>dng.cot then
Begin
Hgc:=-2;
If Hgc=hgdi then Begin Hgchan:=Hgc; Exit; End;
End;
If dmay.hg<dng.hg then
Begin
Hgc:=-1;
If Hgc=hgdi then Begin Hgchan:=Hgc; Exit; End;
End;
If dmay.hg>dng.hg then
Begin
Hgc:=1;
If Hgc=hgdi then Begin Hgchan:=Hgc; Exit; End;
End;
Hgchan:=Hgc;
End;
Procedure Nap(Var Q:Qu; d1:diem; hgdi,k:Integer);
Var h,c:Integer;
d2:diem;
Begin
Sinh(d1,Q[cq],hgdi,k);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 134

End;
Procedure Maydi;
Begin
Inc(dq);
if not ok then
Begin
If Q[dq].hg<dmay.hg then hgdi:=1
Else If Q[dq].hg>dmay.hg then hgdi:=-1
Else If Q[dq].cot<dmay.cot then hgdi:=-2
Else If Q[dq].cot>dmay.cot then hgdi:=2;
End;
dmay:=Q[dq];
A[q[dq].hg,q[dq].cot]:='x';
HienA(-10,10,-10,10)
End;
Procedure Process;
Var Hgc,p,i,ntt:Integer;
Begin
ok:=true; ntt:=0;
Ngdi;
Hgc:=Hgchan; Hgdi:=-Hgc;
Inc(cq); Nap(Q,dmay,hgdi,1); Maydi; Inc(dlt);
Repeat
Ngdi; Hgc:=Hgchan;
If ntt=1 then
If A[dc1.hg,dc1.cot]='.' then finish(dc1)
Else finish(dc2);
If ntt=0 then If (dlt>=3) and (kt(dc1,dc2)) then ntt:=1;
If (Hgc=Hgdi) then
If ok then
Begin
p:=2 div abs(Hgc);
For i:=1 to dlt-1 do
Begin
Inc(cq); Nap(Q,dmay,p,i); Nap(Qc,Q[cq],-hgdi,i);
Inc(cq); Nap(Q,dmay,-p,i);Nap(Qc,Q[cq],-hgdi,i);
End;
ok:=false;
dlt:=1;
End
Else
Begin
hgdi:=-hgdi; Inc(cq); Nap(Q,dmay,hgdi,dlt);
End;
If ntt=0 then
Begin
If dq=cq then Begin Inc(cq); Nap(Q,dmay,hgdi,1); End;
If A[Qc[dq].hg,Qc[dq].cot]='.' then finish(Qc[dq]);
Maydi; Inc(dlt);
End;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 135

Until fin;
End;
BEGIN
Init;
Process;
END.

Bi 76/2001 - on thng v hnh ch nht


(Dnh cho hc sinh PTTH)
Thut ton:
- Xt on thng ct vi tng cnh ca hnh ch nht, iu kin ct ca on thng vi
mt on thng khc (cnh ca hnh ch nht) l:
+ Hai u ca on thng khc pha vi on thng ca hnh ch nht;
+ Hai u ca on thng hnh ch nht khc pha vi on thng.
Chng trnh:
Program Bai76;
const inp= input.txt;
out= output.txt;
function cat (xs, ys, xe, ye, xl, yt, xr, yb: real): boolean;
var a, b, x, y: real;
lg1, lg2: boolean;
Begin
if xs=xe then
begin
lg1:=(xs<xl) or (xs>xr) or ((ys>yt) and (ye>yt)) or ((ys<yb) and (ye<yb));
lg2:=(xs>xl) and (xs<xr) and (ys<yt)and (ye<yt) and (ys>yb) and (ye>yb);
cat:=not (lg1 or lg2);
end
else begin
if ys=ye then
begin
lg1:=((xs<xl) and (xe<xl)) or ((xs>xr) and (xe>xr)) or (ys>yt) or (ys<yb));
lg2:=(xs>xl) and (xe>xl) and (xs<xr)and (xe<xr) and (ys<yt) and (ys>yb);
cat:=not (lg1 or lg2);
end
else begin
cat:=false;
a:=(ys-ye)/(xs-xe);
b:=ys-a*xs;
y:= a*xl+b;
if(y<=yt)and(y>=yb)then cat:= true;
y: =a*xr+b;
if(y<=yt)and(y>=yb)then cat:=true;
x:=(yt-b)/a;
if (x>=xl)and (x<=xr)then cat:=true;
x:=(yb-b)/a;
if (x>=xl)and (x<=xr)then cat:=true;
end;
end;
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 136

procedure xuly;
var n, i: word; xs, ys, xe, ye, xl, yt, xr, yb: real;
fi, fo: text;
Begin
assign(fi, inp); reset (fi);
assign (fo, out); rewrite(fo);
readln(fi, n);
for i:=1 to n do begin
readln (fi, xs, ys, xe, ye, xl, yt, xr, yb);
if cat (xs, ys, xe, ye, xl, yt, xr, yb) then writeln (fo, T)
else writeln(fo, F);
end;
close (fi);
close (fo);
end;
BEGIN
xuly;
END.
(Li gii ca bn L Mnh H - Lp 10A Tin - Khi PTCTT - HKHTN - HQG H
Ni)

Bi 77/2001 - Xo s trn bng


(Dnh cho hc sinh Tiu hc)
1. C th thc hin c.
Sau y l mt cch lm c th: ta ln lt xo tng nhm hai s mt t cui ln: (23 -
22); (21 - 20); ....; (5 - 4); (3 - 2). Nh vy, sau 11 bc ny trn bng s cn li 12 s 1.
Do , ta ch vic nhm 12 s 1 ny thnh 6 nhm c hiu bng 0. Khi , trn bng s
ch cn li ton s 0.
2. Nu thay 23 s bng 25 s th bi ton trn s khng thc hin c.
Gii thch:
Ta c tng cc s t 1 n 25 = (1 + 25) x 25 : 2 s l mt s l.
Gi s, khi xo i hai s bt k th tng cc s trn bng s gim i l: (a + b) - (a - b) =
2b = mt s chn.
Nh vy, sau mt s bc xo hai s bt k th tng cc s trn bng vn cn li l mt
s l (s l - s chn = s l) v do trn bng s khng phi l cn ton s 0.

Bi 78/2001 - C rt v nhng ch th
(Dnh cho hc sinh Tiu hc)
Ch th c th n c nhiu nht 120 c c rt. ng i ca ch th nh sau:
14->12->13->14->13->16->15->10->13
Do , s c c rt ch th n c khi i theo ng ny l:
14 + 12 + 13 + 14 + 13 + 16 + 15 + 10 + 13 = 120 (c)

Bi 79/2001 - V mt ma trn s
(Dnh cho hc sinh THCS)
Bi ny c rt nhiu nghim, lit k tt c cc nghim th phi s dng thut ton
duyt. Do khng gian tm kim l cc k ln nn nu duyt tm thng th khng th
gii uc, thm ch cn khng ra nghim no c. V vy bi gii ny duyt bng cch

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 137

xy dng mt mng ban u tho mn tch cht: dng ng 10 s 0, 10 s 1, ..., 10 s 9


v mi dng khng c qu 4 s khc nhau. Sau bng cch hon v vng cc dng
tho mn tnh cht ca bi.
Chn mng ban u nh th gim i rt nhiu kh nng v cng lm mt i rt nhiu
nghim. Mng ban u c th c rt nhiu cch chn, s nghim tm ra ph thuc rt
nhiu vo cch chn ny.
V d c th chn mng ban u l:
(0,0,1,1,2,2,2,3,3,3)
(1,1,2,2,3,3,3,4,4,4)
(2,2,3,3,4,4,4,5,5,5)
(3,3,4,4,5,5,5,6,6,6)
(4,4,5,5,6,6,6,7,7,7)
(5,5,6,6,7,7,7,8,8,8)
(6,6,7,7,8,8,8,9,9,9)
(7,7,8,8,9,9,9,0,0,0)
(8,8,9,9,0,0,0,1,1,1)
(9,9,0,0,1,1,1,2,2,2)
V s nghim rt nhiu nn ta mun ghi ra bao nhiu nghim th thay i bin sn thay
i s nghim cn ghi ra. Bi gii ny in ra 100 nghim.
Cc bn ch rng nu c 1 bng tho mn tnh cht ca bi th tro 2 dng hoc tro 2
ct bt k vi nhau, hoc quay 900 bng ta c th c cc bng cng tho mn.
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 65384,0,655360}
uses crt;
type MG = array[1..10,1..10]of integer;
mg1c = array[1..10]of integer;

const N =10;
p = 4;
sn =100; {s nghim mun ghi ra}
fo ='out.txt';
h :MG= {mt cch chn khc}
((0,0,0,1,1,1,2,2,2,3),
(1,1,1,2,2,2,3,3,3,4),
(2,2,2,3,3,3,4,4,4,5),
(3,3,3,4,4,4,5,5,5,6),
(4,4,4,5,5,5,6,6,6,7),
(5,5,5,6,6,6,7,7,7,8),
(6,6,6,7,7,7,8,8,8,9),
(7,7,7,8,8,8,9,9,9,0),
(8,8,8,9,9,9,0,0,0,1),
(9,9,9,0,0,0,1,1,1,2));

var a,dx : MG;


lap : mg1c;
dem : longint;
f : text;

procedure init;
var k :integer;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 138

begin
dem:=0;
a:=h;
fillchar(dx,sizeof(dx),0);
fillchar(lap,sizeof(lap),0);
for k:=1 to N do lap[k]:=1;
for k:=1 to N do dx[k,a[1,k]+1]:=1;
end;

procedure ghikq(w:mg);
var i,j,ds:integer;
begin
inc(dem);
writeln('****** :',dem,':******');
writeln(f,'****** :',dem,':******');
for i:=1 to N do
begin
for j:=1 to N do
begin
write(w[i,j]:2);
write(f,w[i,j]:2);
end;
writeln;writeln(f);
end;
end;

function doi(k:integer):integer;
begin
if k mod N=0 then doi:=N
else doi:=k mod N;
end;

procedure try(k:byte;w:MG);
var i,j :byte;
luu :mg1c;
ldx :mg;
ok :boolean;
begin
luu:=lap;ldx:=dx;
for i:=1 to N do
begin
lap:=luu;dx:=ldx;
for j:=1 to N do w[k,j]:=a[k,doi(i+j-1)];

ok:=true;
for j:=1 to N do
begin
inc(lap[j],1-dx[j,w[k,j]+1]);
dx[j,w[k,j]+1]:=1;
if lap[j]>4 then

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 139

begin
ok:=false;
break;
end;
end;

if ok then
begin
if k=N then
ghikq(w)
else try(k+1,w);
end;
if dem=sn then exit;
end;
lap:=luu;dx:=ldx;
end;

BEGIN
clrscr;
init;
assign(f,fo);
rewrite(f);
try(2,a);
close(f);
END.
(Li gii ca V Anh Qun)

Bi 80/2001 - Xp s 1 trn li
(Dnh cho hc sinh THCS)
Bi ton c rt nhiu nghim, lit k cc nghim th ta phi s dng thut ton duyt.
Song duyt th rt ln, mt khc ra c mt cch in tho mn th khng n gin
cht no (thi gian chy s rt lu, thm ch cn c th b tc). Bi gii ny duyt theo
mt hng tham lam c th hin ra c kh nhiu cch in tho mn, tuy nhin
hng gii ny khng hin ra ht tt c cc nghim.
Hng duyt tham lam:
+ Mi dng, mi ct c t nht mt s 1.
+ Chia ma trn 10x10 thnh 4 ma trn 5x5, mi ma trn 5x5 ny s c in 4 s 1.
Cch kim tra tt mt ma trn sau khi in c tho mn tnh cht ca bi khng?
Duyt cch chn 5 hng bt k ri xo cc s hng , sau khi xo xong ta tm cch
xo 5 ct. Nu sau khi xo hng xong m ct no cn s 1 th phi xo ct .
Nu trong tt c cc cch xo hng, ct nh vy u khng xo ht c th bng
tho mn tnh cht ca bi.
Chng trnh sau hin ra 100 nghim.
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R-,S+,T-,V+,X+}
{$M 16384,0,655360}
uses crt;
const N =10;
p =16;
sn =100; {s nghim mun hin ra}
fo ='output.txt';

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 140

type MG =array[1..5,1..5] of byte;


var a : array[1..N,1..N] of integer;
w : array[1..600] of MG;
d : array[1..5] of integer;
c,dong,cc,ddd : array[0..N] of integer;
ok : boolean;
dem,sl : longint;
s : MG;
f : text;
procedure nap;
var i,j,k : integer;
begin
for i:=1 to 5 do
begin
k:=0;
inc(dem);
for j:=1 to 5 do
if i<>j then
begin
inc(k);
w[dem,j]:=s[k];
end;
end;
end;

procedure try(i:byte);
var j :byte;
begin
for j:=1 to 5 do
if d[j]=0 then
begin
s[i,j]:=1;
d[j]:=1;
if i=4 then nap
else try(i+1);
d[j]:=0;
s[i,j]:=0;
end;
end;
procedure kiemtra;
var i,j,use,k :integer;
begin
cc:=c;
for i:=1 to 5 do
for j:=1 to N do dec(cc[j],a[dong[i],j]);
use:=0;
for k:=1 to N do inc(use,ord(cc[k]>0));
if use<=5 then ok:=false;
end;
procedure thu(i:integer);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 141

var j :integer;
begin
for j:=dong[i-1]+1 to N-5+i do
begin
dong[i]:=j;
if i=5 then kiemtra
else thu(i+1);
if ok=false then exit;
end;
end;
procedure lam;
var i,j,x,y,u,v,k :integer;
begin
for i:=1 to dem do
for j:=dem downto 1 do
for x:=1 to dem do
for y:=dem downto 1 do
begin
for u:=1 to 5 do
for v:=1 to 5 do a[u,v]:=w[i,u,v];
for u:=1 to 5 do
for v:=1 to 5 do a[u,5+v]:=w[j,u,v];
for u:=1 to 5 do
for v:=1 to 5 do a[5+u,v]:=w[x,u,v];
for u:=1 to 5 do
for v:=1 to 5 do a[5+u,5+v]:=w[y,u,v];

fillchar(c,sizeof(c),0);
fillchar(ddd,sizeof(ddd),0);
fillchar(dong,sizeof(dong),0);
for u:=1 to N do
for v:=1 to N do
begin
inc(c[v],a[u,v]);
inc(ddd[u],a[u,v]);
end;
ok:=true;
for k:=1 to N do
if (c[k]=0)or(ddd[k]=0) then ok:=false;
if ok then thu(1);
if ok then
begin
inc(sl);
writeln('*******:',sl,':*******');
writeln(f,'*******:',sl,':*******');
for u:=1 to N do
begin
for v:=1 to N do
begin
write(a[u,v],#32);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 142

write(f,a[u,v],#32);
end;
writeln;writeln(f);
end;
if sn=sl then exit;
end;
end;
end;
BEGIN
clrscr;
fillchar(d,sizeof(d),0);
fillchar(w,sizeof(w),0);
fillchar(s,sizeof(s),0);
dem:=0;sl:=0;
try(1);
assign(f,fo);
rewrite(f);
lam;
close(f);
END.
(Li gii ca c ng)

Bi 81/2001 - Dy nghch th
(Dnh cho hc sinh PTTH)
Program day_nghich_the;
uses crt;
const fn = 'nghich.inp';
gn = 'nghich.out';
nmax=10000;
var f,g:text;
n,i,j,dem:0..nmax;
a,b,luu:array[1..nmax] of 0..nmax;
procedure nhap;
begin
fillchar(a,sizeof(a),0); b:=a;
assign(f,fn); reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]); write(f);
for i:=1 to n do read(f,b[i]);
close(f);
end;
procedure tim_b;
begin
fillchar(luu,sizeof(luu),0);
for i:=1 to n do
begin
dem:=0;
for j:=i -1 downto 1 do
if a[i]<a[j] then inc(dem);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 143

luu[a[i]]:=dem;
end;
for i:=1 to n do write(g,luu[i]:2);
writeln(g); writeln(g);
end;
procedure tim_a;
begin
fillchar(luu,sizeof(luu),0);
for i:=1 to n do
if b[i]>n-i then exit else
begin
j:=0;
dem:=0;
repeat
inc(dem);
if luu[dem]=0 then j:=j+1;
until j>b[i];
luu[dem]:=i;
end;
for i:=1 to n do write(g,luu[i]:2);
end;
BEGIN
nhap;
assign(g,gn);rewrite(g);
tim_b;
tim_a;
close(g);
END.
(Li gii ca bn L Th Thu Thu - Lp 11A2 PTTH chuyn Vnh Phc - th x Vnh
Yn - tnh Vnh Phc)

Bi 82/2001 - Gp g
(Dnh cho hc sinh PTTH)
Bi ny c th gii d dng nh nhn xt sau:
- Nu k robot cc v tr m tng to ca chng (x+y) c tnh chn l khc nhau th
chng khng bao gi gp nhau (v chng lun lun di chuyn, khng c robot ng
yn). Nh vy, sau khi loi trng hp trn, gi A[t, i j] l s bc di chuyn t nht
robot t di chuyn t v tr ban u n (i, j). Khi , s bc di chuyn t nht m k
robot phi di chuyn gp nhau l:
Min (max(A(t, i j) vi 1 <= t <= k, 1 <= i <= M, 1 <= j <= N. Loang ngc li, ta c
ng i ca nhng robot ny.
Ci t chng trnh:
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
Program MEET;
Uses crt;
Type point = record
x,y:integer;
End;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 144

Const P:array[1..4,1..2] of integer=((0,1),(0,-1),(-1,0),(1,0));


Q:string='LRDU';
inp = 'MEET.INP';
out = 'MEET.OUT';
Var v: array[1..10] of point;
A: array[1..10,0..51,0..51] of integer;
B: array[0..51,0..51] of byte;
t: array[0..1,1..750] of point;
M,N,K,c,d,e,g,h,l,i,j,Min,Max:integer;
s,st:string;
f:text;
Procedure NoSolution;
Begin
Write(' # ');Readln;Halt;
End;
Procedure Input;
Begin
Assign(f,inp);Reset(f);
Readln(f,m,n,k);
If k>0 then
Begin
Readln(f,v[1].x,v[1].y);
e:=(v[1].x+v[1].y) mod 2;
End;
For c:=2 to k do
Begin
Read(f,v[c].x,v[c].y);
If (v[c].x+v[c].y) mod 2<>e then NoSolution;
End;
Fillchar(b,sizeof(b),1);
For c:=1 to m do
For d:=1 to n do read(f,B[c,d]);
Close(f);
End;
Procedure Solve;
Var Stop:boolean;
z:array[0..1] of integer;
Begin
For c:=0 to m+1 do
For d:=0 to n+1 do
If b[c,d]=0 then
For e:=1 to k do a[e,c,d]:=MaxInt else
For e:=1 to k do a[e,c,d]:=-1;
For c:=1 to k do
Begin
l:=1;g:=0;h:=1;z[0]:=1;z[1]:=0;
t[0,1]:=v[c];a[c,v[c].x,v[c].y]:=0;
Stop:=false;
While not Stop do
Begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 145

Stop:=true;
For d:=1 to z[g] do
For e:=1 to 4 do
Begin
i:=P[e,1]+t[g,d].x;
j:=P[e,2]+t[g,d].y;
If a[c,i,j]>l then
Begin
a[c,i,j]:=l;inc(z[h]);
t[h,z[h]].x:=i;
t[h,z[h]].y:=j;
Stop:=false;
End;
End;
l:=l+1;g:=1-g;h:=1-h;z[h]:=0;
End;
End;
Min:=MaxInt;
For c:=1 to m do
For d:=1 to n do
If b[c,d]<>1 then
Begin
max:=a[1,c,d];
For e:=2 to k do
If Max<a[e,c,d] then Max:=a[e,c,d];
If Min>Max then
Begin
Min:=Max;
i:=c;j:=d;
End;
End;
If Min=MaxInt then NoSolution;
Assign(f,out);Rewrite(f);
For e:=1 to k do
Begin
c:=i;d:=j;s:='';
While A[e,c,d]>0 do
Begin
l:=1;
While a[e,c+P[l,1],d+P[l,2]]+1<>a[e,c,d] do l:=l+1;
s:=Q[l]+s;
c:=c+P[l,1];d:=d+P[l,2];
End;
l:=l-1+2*(l mod 2);
st:=s[1]+Q[l];
For g:=1 to (min-a[e,i,j]) div 2 do s:=st+s;
Writeln(f,s);
End;
Close(f);
End;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 146

BEGIN
Clrscr;
Input;
Solve;
Write('Complete - Open file ',out,' to view the result');
Readln
END.
(Li gii ca bn V L An - Lp 12T2 - L Khit - Qung Ngi)
Nhn xt: Bi lm ca bn V L An phn kt qu cn thiu trng hp. Sau y l mt
cch ci t khc song thut ton cng ging vi V L An.
M rng bi ton: Cho mt th gm N nh, c k con robot k nh V1, V2,.., Vk.
Sau mi n v thi gian tt c cc con robot u phi chuyn ng sang cc nh k vi
nh n ang ng. Hy tm cch di chuyn cc con robot chng gp nhau ti mt
im.
a. Trong th v hng
b. Trong th c hng (k = 2 - thi chn i tuyn Quc gia)

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 65384,0,655360}
program Bai82_gap_go;{Author : c ng}
uses crt;
const max =50;
max_robot =10;
fi ='meet.inp';
fo ='meet.out';
tx :array[1..4]of integer=(0,-1,1,0);
ty :array[1..4]of integer=(-1,0,0,1);
h :string='LUDR';

var a :array[1..max,1..max]of byte;


robot :array[1..max_robot,1..2]of byte;
l :array[1..max,1..max,1..max_robot]of integer;
q :array[1..max*max,1..2]of byte;
dau,cuoi,m,n,r :integer;
best,mx,my :integer;
ok :boolean;

procedure docf;
var f :text;
k,i,j:integer;
begin
assign(f,fi);
reset(f);
readln(f,m,n,r);
for k:=1 to r do readln(f,robot[k,1],robot[k,2]);
for i:=1 to m do
for j:=1 to n do read(f,a[i,j]);
close(f);
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 147

procedure loang(k:integer);
var x,y,s,u,v :integer;
begin
fillchar(q,sizeof(q),0);
dau:=1;cuoi:=1;
q[1,1]:=robot[k,1];
q[1,2]:=robot[k,2];
l[robot[k,1],robot[k,2],k]:=1;
while dau<=cuoi do
begin
x:=q[dau,1];y:=q[dau,2];
for s:=1 to 4 do
begin
u:=x+tx[s];
v:=y+ty[s];
if (u>0)and(v>0)and(u<=m)and(v<=n)and(a[u,v]=0)and(l[u,v,k]=0) then
begin
inc(cuoi);q[cuoi,1]:=u;q[cuoi,2]:=v;
l[u,v,k]:=l[x,y,k]+1;
end;
end;
inc(dau);
end;
end;

procedure lam;
var k,i,j :integer;
meet :boolean;
begin
fillchar(l,sizeof(l),0);
ok:=true;
for k:=2 to r do
if (robot[1,1]+robot[1,2]+robot[k,1]+robot[k,2]) mod 2=1 then ok:=false;

if ok then
begin
best:=maxint;
for k:=1 to r do loang(k);
for i:=1 to m do
for j:=1 to n do
begin
meet:=true;
for k:=1 to r do meet:=meet and (l[i,j,k]>0) and (l[i,j,k]<best);

if meet then
begin
best:=0;
for k:=1 to r do
if l[i,j,k]>best then
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 148

best:=l[i,j,k];
mx:=i;my:=j;
end;
end;
end;
ok:=best<maxint;
end;
end;

procedure ghif;
var f :text;
k,kk :byte;
lap :string;

procedure viet(x,y:byte);
var u,v,s :byte;
begin
for s:=1 to 4 do
begin
u:=x+tx[s];
v:=y+ty[s];
if (u>0)and(v>0)and(u<=m)and(v<=n)and(l[u,v,k]=l[x,y,k]-1) then
begin
if l[u,v,k]>1 then viet(u,v);
write(f,h[5-s]);
break;
end;
end;
end;

begin
assign(f,fo);
rewrite(f);
if ok=false then write(f,'#')
else
begin
for k:=1 to 4 do
if (mx+tx[k]>0)and(my+ty[k]>0)and(mx+tx[k]<=m)and(my+ty[k]<=n) then
if (a[mx+tx[k],my+ty[k]]=0) then kk:=k;
lap:=h[kk]+h[5-kk];

for k:=1 to r do
begin
if l[mx,my,k]>1 then viet(mx,my);
for kk:=1 to (best-l[mx,my,k]) div 2 do write(f,lap);
writeln(f);
end;
end;
close(f);
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 149

BEGIN
docf;
lam;
ghif;
END.

Bi 83/2001 - Cc ng trn ng tm
(Dnh cho hc sinh Tiu hc)
p s: Cc s c in nh sau:

Bi 84/2001 - Cng mt tch


(Dnh cho hc sinh THCS v THPT)
Thut ton: Gi s lng s xi =1 l a, s lng s xi=-1 l b, s lng s xi = 0 l c. Ta
c: a+b+c=N.
Vi mi gi tr c khc nhau ta c tng ng mt nghim. Nn s nghim bng s gi tr
m c c th nhn c. Nu duyt theo bin c th c rt nhiu kh nng nn thay v
duyt theo bin c ta duyt theo a v b. Vai tr ca cc s bng 1 v cc s bng -1 l nh
nhau nn ta c th gi s s lng s bng 1 ln hn s lng bng -1 (a>=b).
Vy xi = a-b v xi2 = a+b (i = 1,..,N)
xixj = P (i =1, ..., N; j =1, ..., N; i<>j) suy ra P =2*xixj (i =1, ..., N -1; j =1, ..., N;
i<j)
Ta c phng trnh: (a+b)+p=(a-b)2
suy ra 0 <= (a-b) <= sqrt(a+b+p) <= sqrt(N+p)<[sqrt(2*1010)] = 44721.
Vy ng vi mi gi tr (a-b) ta c mt gi tr (a+b) v mt gi tr c. Ln lt th vi
tng gi tr ca (a-b) ri kim tra xem a, b v c tho mn cc tnh cht khng?
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
uses crt;
const fi ='input.txt';
fo ='output.txt';
var n,p, h :longint;
dem :longint;
t :real;
procedure docf;
var f :text;
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 150

assign(f,fi);
reset(f);
read(f,n,p);
close(f);
dem:=0;
end;
procedure lam;
var can :longint;
begin
can:=trunc(sqrt(2*n));
for h:=0 to can do
begin
t:=h;
t:=sqr(t)-p;
if (t>=h)and(t<=n) then inc(dem);
end;
end;
procedure ghif;
var f :text;
begin
assign(f,fo);
rewrite(f);
writeln(f,dem);
close(f);
end;
BEGIN
docf;
if p mod 2=0 then lam;
ghif;
END.
(Li gii ca c ng)

Bi 85/2001 - Bin i 0 - 1
(Dnh cho hc sinh THPT)
Thut ton: Bi ny s dng thut ton duyt nhng c mt vi ch sau:
- Vi 1 ta ch tc ng nhiu nht mt ln.
- Th t tc ng l khng quan trng.
- Vi mt c nhiu nht 5 nh hng c ti n, v vy nu vi mt ta bit 4
nh hng ca n c c tc ng hay khng th cn li ta s bit l c nn tc ng
hay khng tc ng.
T cc ch trn ta s duyt mt dng 1 (hoc mt ct 1) c tc ng nh th no
khi cc dng 1 (hoc ct 1) s ch cn 1 nh hng ti n. Ta s bit c rng
cc dng 2 (hoc ct 2) cng s c tc ng nh th no, c nh vy cho cc dng
tip theo.
Bi s phi duyt 2N nu duyt theo dng 1 (2M nu duyt theo ct 1) v vy gim
phc tp ca bi bn nn chn duyt theo chiu no tu thuc vo M,N.
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
uses crt;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 151

const max =100;


fi ='biendoi.inp';
fo ='biendoi.out';
tx : array[0..4]of integer=(0,0,-1,0,1);
ty: array[0..4]of integer=(0,-1,0,1,0);
type mg = array[1..max,1..max]of byte;
var a,b,td,lkq,c:mg;
m,n,dem,best:integer;
procedure docf;
var f :text;
i,j :byte;
begin
assign(f,fi);
reset(f);
readln(f,m,n);
for i:=1 to m do
for j:=1 to n do read(f,a[i,j]);
for i:=1 to m do
for j:=1 to n do read(f,b[i,j]);
close(f);
end;
procedure tacdong(i,j:byte);
var u,v,k :integer;
begin
for k:=0 to 4 do
begin
u:=i+tx[k];
v:=j+ty[k];
if (u>0)and(v>0)and(u<=m)and(v<=n) then a[u,v]:=1-a[u,v];
end;
inc(dem);
end;
procedure process;
var i,j,k :byte;
w : mg;
begin
c:=a;dem:=0;w:=td;
for i:=1 to n do
if td[1,i]=1 then tacdong(1,i);
for i:=2 to m do
for j:=1 to n do
if a[i-1,j]<>b[i-1,j] then
begin
tacdong(i,j);
td[i,j]:=1;
end;
for k:=1 to n do
if a[m,k]<>b[m,k] then begin a:=c;td:=w;exit;end;
if dem<best then
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 152

best:=dem;
lkq:=td;
end;
a:=c;td:=w;
end;
procedure try(i:byte);
var j :byte;
begin
for j:=0 to 1 do
begin
td[1,i]:=j;
if i=n then process
else try(i+1);
end;
end;
procedure ghif;
var f :text;
i,j :integer;
begin
assign(f,fo);
rewrite(f);
if best<>maxint then
begin
writeln(f,best);
for i:=1 to m do
for j:=1 to n do
if lkq[i,j]=1 then writeln(f,i,#32,j);
end
else writeln(f,'No solution');
close(f);
end;
begin
clrscr;
best:=maxint;
docf;
try(1);
ghif;
end.
(Li gii ca inh Quang Huy)

Bi 86/2001 - Dy s t nhin logic


(Dnh cho hc sinh Tiu hc)
S u v s cui cn tm ca dy s logic cho l: 10 v 24.
Gii thch: dy s l dy cc s t nhin lin tip khng nguyn t.

Bi 87/2001 - Ghi cc s trn bng


(Dnh cho hc sinh THCS)
Procedure bai87;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 153

uses crt;
var d, N:integer;
begin
clrscr;
write('Nhap so nguyen duong N: '); readln(N);
repeat
if N mod 2 = 0 then N:= div 2 else N:=N-1;
d:=d+1;
until N=0;
write('So lan ghi so len bng: ', d);
readln;
End.
(Li gii ca bn Cao Le Thang Long)

Bi 88/2001 - V cc s c bit c 10 ch s
(Dnh cho hc sinh THCS v THPT)
Thut ton: mng a[0..9] lu kt qu, t[i] l s cc ch s i trong a. Theo bi ta c th
suy ra: a[0] + a[1] + ... + a[9] = s cc ch s 0 + s cc ch s 1 + ... + s cc ch s 9
= 10. Nh vy, ta dng php sinh quy c nhnh cn gii bi ton: mi bc sinh
a[i], ta tnh tng cc ch s a[0]..a[i] (lu vo bin s), nu s >10 th khng sinh tip na.
Sau y l ton b chng trnh:
Procedure bai88;
const fo='bai88.out';
var a,t:array[0..9] of integer;
i,s:integer;
f:text;
procedure save;
var i:integer;
begin
for i:=0 to 9 do if a[i] <> t[i] then exit;
for i:=0 to 9 do write(f,a[i]); writeln(f);
end;
procedure try(i:integer);
var j:integer;
begin
for j:= 0 to 9 do
if ((i<j) or ((i>=j) and (t[j] +1 <=a[j]))) and (s<=10) then
begin
a[i]:=j;
inc(t[j]);
s:=s+j;
if i<9 then try(i+1) else save;
dec(t[j]);
s:=s-j;
end;
end;
BEGIN
assign(f,fo);rewrite(f);
for i:=1 to 9 do
begin
fillchar(t,sizeof(t),0);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 154

s:=0;
a[0]:=i;
s:=s+i;
t[i]:=1;
try(1);
end;
close(f);
END.
(Li gii ca bn Nguyn Ch Thc - Lp 11A1 khi PTCTT - HSP H Ni)

Bi 89/2001 - Ch s th N
(Dnh cho hc sinh THCS v THPT)
Thut ton: t nhn xt rng c 9 s c 1 ch s, 90 s c 2 ch s, ... Ta s xc nh
xem ch s th N thuc s c my ch s v n l s no? Sau xem n v tr th
my trong s .
Program bai89;
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
Uses crt;
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);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 155

close(g);
END.
(Li gii ca bn L Vn c - Nguyn Hu - H ng - H Ty)

Bi 90/2002 - Thay s trong bng 9


(Dnh cho hc sinh Tiu hc)
Do tng cc s trong cc in cng ch ci ban u l bng nhau nn ta suy ra: 2M =
3I = 4S. V 4S chia ht cho 4, do 2M v 3I cng chia ht cho 4.
Suy ra: I chia ht cho 4; M = 2S; 3I = 4S.
t I = 4k (k = 1, 2,...), ta suy ra tng ng: S = 3k, v M = 6k.
V d, vi k = 1 ta c p s sau: I = 4, S = 3, M = 6;
Vi k = 2, ta c: I = 8, S = 6, M = 12; ...

Bi 91/2002 - Cc s lp
(Dnh cho hc sinh THCS v THPT)
Program bai91;
{Thuat toan lua bo vao chuong}
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
USES crt;
CONST M1 = MaxInt div 4 + 1;
M2 = MaxInt;
fi = 'Bai91.Inp';
TYPE MA = Array[0..M1] of LongInt;
Var A: Array[0..3] of ^MA;
d,l :LongInt;
Procedure Init;
Var i:Byte;
Begin
For i:=0 to 3 do
begin
New(A[i]);
Fillchar(A[i]^,sizeof(A[i]^),0);
end;
End;
Procedure ReadF(k:ShortInt);
Var f:Text;
x:LongInt;
i,j:Integer;
Begin
Init;
Assign(f,fi);
Reset(f);
While Not SeekEof(f) do
begin
Read(f,x);
x:=x*k;
If x>=0 then
begin
i:=x div M1;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 156

j:=x mod M1;


If i=4 then begin i:=3; j:=M1; end;
Inc(A[i]^[j]);
If A[i]^[j]>d then begin d:=A[i]^[j]; l:=x*k; end;
end;
end;
Close(f);
For i:=0 to 3 do Dispose(A[i]);
End;
BEGIN
Clrscr;
d:=0; l:=0;
ReadF(-1);
ReadF(1);
Writeln('So lap nhieu nhat la: ',l,#10#13,'Voi so lan lap : ',d);
Readln;
END.
(Li gii ca Nguyn Ton Thng *)
Bi gii ca bn Nguyn Ton Thng dng thut ton la b vo chung. Sau y l
cch gii khc dng thut ton m s ln lp.
Thut ton: T tng thut ton l dng mng nh u c ngha l s x th Lap[x] s l
s ln xut hin ca s x trong mng. V s phn t ca mng nh hn hoc bng 10 6
nn phn t ca mng Lap phi l kiu d liu c th lu tr c 106. S x l s
nguyn kiu integer v do gii hn b nh l 64K nn ta dng ba mng ng nh sau:
MG = array[-maxint..maxint] of byte;
L[1..3] of ^MG;
X l trong h c s 100.
Chng trnh.
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 16384,0,655360}
program bai91;{ c ng}
uses crt;

const fi ='input.txt';
fo ='output.txt';
coso =100;

type mg =array[-maxint..maxint]of byte;

var L :array[1..3]of ^mg;


n,lap :longint;
kq :integer;
time :longint;
clock :longint absolute $00:$0046c;

procedure tao_test;
var f :text;
k :longint;
begin
n:=1000000;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 157

assign(f,fi);
rewrite(f);
writeln(f,n);
for k:=1 to N do
if random(2)=1 then write(f,random(maxint),#32)
else write(f,-random(maxint),#32);
close(f);
end;

procedure danhdau(x:integer);
var i :integer;
begin
for i:=3 downto 1 do
if L[i]^[x]<coso then
begin
inc(L[i]^[x]);
break;
end
else L[i]^[x]:=0;
end;

procedure lam;
var f :text;
k :longint;
x :integer;
begin
for k:=1 to 3 do
begin
new(L[k]);
fillchar(L[k]^,sizeof(L[k]^),0);
end;
assign(f,fi);
reset(f);
read(f,n);
for k:=1 to n do
begin
read(f,x);
danhdau(x);
end;
close(f);

lap:=0;
for k:=-maxint to maxint do
if L[1]^[k]*sqr(coso)+L[2]^[k]*coso+L[3]^[k]>lap then
begin
lap:=L[1]^[k]*sqr(coso)+L[2]^[k]*coso+L[3]^[k];
kq:=k;
end;

for k:=1 to 3 do dispose(L[k]);

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 158

end;

procedure ghif;
var f :text;
begin
assign(f,fo);
rewrite(f);
write(f,kq);
writeln('So lan lap :',lap);
close(f);
end;

BEGIN
{tao_test;}
time:=clock;
lam;
ghif;
writeln((clock-time)/18.2:10:10);
END.

Bi 92/2002 - Dy chia ht
(Dnh cho hc sinh THPT)
program DayChiaHet;
uses crt;
const inp='div.inp';
out='div.out';
var a:array[0..1] of set of byte;
g:text;
k,n,t,i,j,l:longint;
function f(x:longint):byte;
begin
x:=x mod k;
if x<0 then f:=x+k else f:=x;
end;
begin
clrscr;
assign(g,inp);reset(g);
readln(g,n,k);
t:=0;
read(g,j);
a[0]:=[f(j)];
for i:=2 to n do
begin
t:=1-t;
a[t]:=[];
read(g,j);
for l:=0 to k-1 do
if l in a[1-t] then
begin
a[t]:=a[t]+[f(l+j)];

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 159

a[t]:=a[t]+[f(l-j)];
end;
end;
close(g);
assign(g,out);rewrite(g);
if 0 in a[t] then write(g,1) else write(g,0);
close(g);
write('Complete - Open file ',out,' to view the result');
readln;
End.
(Li gii ca bn V L An - 12T2 - L Khit - Qung Ngi)
M rng bi ton:
1. Tm dy con lin tip c tng b nht.
2. Tm dy con lin tip cc phn t thuc dy bng nhau di nht.
3. Cho ma trn MxN hy tm hnh ch nht c tng ln nht (nh nht) vi M,N<=100
4. Cho ma trn MxN hy tm hnh ch nht c din tch ln nht c cc phn t bng
nhau.
Cch gii bi ton 2 gii ging vi bi ton 1, bi ton 3 v 4 gii ging nhau da trn
c s bi 1,2.
Cch gii bi ton 3: Xt hnh cc hnh ch nht c to ct tri l i to ct phi l
j (mt O(N2)). Coi mi dng nh mt phn t, tm hnh ch nht c din tch ln nht
ta phi mt O(N) na. Nh vy phc tp l O(N3).

Bi 93/2002 - Tr chi bn bi
(Dnh cho hc sinh Tiu hc)
C 3 ng i t s im ln nht l: 32.

Bi 94/2002 - Biu din tng cc s Fibonaci


(Dnh cho hc sinh THCS)
Cch gii: Ta s tm s Fibonacci gn vi s N nht. y s chnh l s hng u tin
nm trong dy kt qu. Sau , ly hiu ca s N v s Fibonacci gn vi s N nht,
tip tc tm s Fib gn vi hiu trn v c th cho n khi hiu l mt s Fib. Kt
qu cc s Fibonacci s c lit k theo th t t ln n nh.
Chng trnh:
Program BdFib;{Bai 94/2002: Bieu dien tong cac so Fibonacci}
uses crt;
var n:longint;
f:array[1..1000] of longint;
function fib(k:integer): longint;
begin
f[1]:=1;
f[2]:=1;
f[3]:=2;
if f[k]=-1 then f[k]:=fib(k-1)+fib(k-2);
fib:=f[k];
end;
procedure xuly;
var i,j:longint;
begin
for i:=1 to 1000 do f[i]:=-1;
while n>0 do
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 160

i:=1;
while fib(i)<=n do
inc(i);
j:=fib(i-1);
write(j,' + ');
n:=n-j;
end;
gotoxy(wherex-2,wherey);
writeln(' ');
end;
procedure test;
begin
clrscr;
write('Nhap n='); readln(n);
clrscr;
write('n=');
xuly;
end;
BEGIN
test;
readln;
END.
(Li gii ca bn Cao L Thng Long - Lp 8E Nguyn Trng T - H Ni)

Bi 95/2002 - Dy con c tng ln nht


(Dnh cho hc sinh THPT)

Program subseq;
const inp = 'subseq.inp';
out = 'subseq.out';
var n, dau, cuoi, d:longint;
max, T:longint;
f, g:text;
Procedure input;
begin
assign(f,inp); reset(f);
assign(g,out); rewrite(g);
Readln(f,n);
End;
Procedure solve;
var i,j:longint;
begin
dau:=1; cuoi:=1; d:=1;
max:=-maxlongint; T:=0;
for i:=1 to n do
begin
readln(f,j); T:=T + j ;
If T > max then
begin
max:=T;
dau:=d; cuoi:=i;
end;
If T<0 then begin T:=0; d:=i+1; end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 161

end;
End;
Procedure output;
Begin
writeln(g,dau);
writeln(g,cuoi);
writeln(g,max);
Close(f); Close(g);
End;
BEGIN
input;
solve;
output;
END.
(Li gii ca bn V Xun Sn - Lp 11A2 THPT Phan Bi Chu - Ngh An)

Bi 96/2002 - S chung ln nht


(Dnh cho hc sinh THPT)
{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q+,R+,S+,T-,V+,X+}
{$M 16384,0,655360}
uses crt;
const maxn = 251;
fi = 'string.inp';
fo = 'string.out';
var pa : array[0..maxn,0..maxn] of byte;
s1,s2,skq : string;
max : byte;
procedure docf;
var f : text;
begin
assign(f,fi);
reset(f);
readln(f,s1);
read(f,s2);
close(f);
end;
function maxso(a,b:byte) : byte;
begin
maxso := (abs(a-b)+a+b) div 2;
end;
procedure Idonotknow;
var i,j : byte;
begin
for i := length(s1) downto 1 do
for j := length(s2) downto 1 do
if s1[i] = s2[j] then pa[i,j] := pa[i+1,j+1] +1
else pa[i,j] := maxso(pa[i+1,j] , pa[i,j+1] );
max := pa[1,1];
end;
procedure wastingtime;
var ch : char;
i,j,so,is,js : byte;
begin
is := 1; js := 1;
so := 0;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 162

repeat
for ch := '9' downto '0' do
begin
i := is; j := js;
while (s1[i] <> ch)and(i <= length(s1)) do inc(i);
while (s2[j] <> ch)and(j <= length(s2)) do inc(j);
if pa[i,j] = max - so then
begin
skq := skq + ch;
is := i+1; js := j+1;
break;
end;
end;
inc(so);
until max=so;
while (skq[1] = '0')and(skq<>'0') do delete(skq,1,1);
end;
procedure ghif;
var f : text;
begin
assign(f,fo);
rewrite(f);
if max = 0 then write(f,' Khong co xau chung !!!...')
else
begin
wastingtime;
write(f,skq);
end;
close(f);
end;
BEGIN
docf;
idonotknow;
ghif;
END.

Bi 97/2002 - Thay s trong bng


(Dnh cho hc sinh Tiu hc)
1 2 3
4 a b c
5 d e f
6 g h i
Ngang
4 - Bi s nguyn ca 8;
5 - Tch ca cc s t nhin lin tip u tin;
6 - Tch cc s nguyn t k nhau
Dc
1 - Bi nguyn ca 11;
2 - Tch ca nhiu tha s 2;
3 - Bi s nguyn ca 11.
Gii:
T (5) - Tch ca cc s t nhin u tin cho kt qu l mt s c 3 ch s ch c th l
120 hoc 720 (1x2x3x4x5 = 120; 1x2x3x4x5x6 = 720).
Do , (5) c th l 120 hoc 720. Suy ra: f = 0; e = 2; d = 1 hoc d = 7.
Tng t, ta tm c (6) c th l 105 hoc 385 (3x5x7 = 105; 5x7x11 = 385). Suy ra: i
= 5; h = 0 hoc h = 8; g = 1 hoc g = 3.

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 163

T (4) suy ra c ch c th l s chn. Do f = 0, i = 5, t (3) ta tm c c = 6.


T (2) - tch ca nhiu tha s 2 cho kt qu l mt s c 3 ch s ch c th l mt
trong cc s: 128, 256, 512. M theo trn e = 2 nn ta tm c (2) l 128. Vy b = 1, h
= 8, g = 3.
T (4) - Bi s nguyn ca 8, do ta c th tm c (4) c th l mt trong cc s:
216, 416, 616, 816.
Tc l, a c th bng 2, 4, 6, hoc 8. Kt hp vi (1), gi s d = 1, nh vy ta khng th
tm c s no tho mn (1).
Vi d = 7, ta tm c a = 4 tho mn (1).
Vy a = 4, b = 1, c = 6, d = 7, e = 2, f = 0, g = 3, h = 8, i = 5.
V ta c kt qu nh sau:
4 1 6
7 2 0
3 8 5

Bi 100/2002 - Mi khch d tic


(Dnh cho hc sinh THPT)
program Guest;
const
Inp = 'Guest.inp';
Out = 'Guest.out';
var
n: Integer;
lSum: LongInt;
t, v, p, Pred, Ind: array[0..1005] of Integer;
Value: array[0..1005] of LongInt;
Ok: array[0..1005] of Boolean;
procedure ReadInput;
var
hFile: Text;
i: Integer;
begin
Assign(hFile, Inp);
Reset(hFile);
Readln(hFile, n);
for i := 1 to n do Readln(hFile, t[i], v[i]);
Close(hFile);
end;
procedure QuickSort(l, r: Integer);
var
i, j, x, tg: Integer;
begin
i := l; j :=r; x := p[(l + r) div 2];
repeat
while t[p[i]] < t[x] do Inc(i);
while t[p[j]] > t[x] do Dec(j);
if i <= j then
begin

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 164

tg := p[i]; p[i] := p[j]; p[j] := tg;


Inc(i); Dec(j);
end;
until i > j;
if i < r then QuickSort(i, r);
if j > l then QuickSort(l, j);
end;
procedure Prepare;
var
i, j: Integer;
begin
FillChar(Value, SizeOf(Value), 0);
FillChar(Ok, SizeOf(Ok), False);
lSum := 0;
for i := 1 to n + 1 do p[i] := i;
t[n + 1] := n + 1;
QuickSort(1, n);
j := 2; Ind[0] := 1;
for i := 1 to n do
begin
while t[p[j]] = i do Inc(j);
Ind[i] := j - 1;
end;
end;
function View(n: Integer): LongInt;
var
i, j: Integer;
lSum1, lSum2: LongInt;
begin
lSum1 := 0; lSum2 := v[n];
for i := Ind[n - 1] + 1 to Ind[n] do
begin
if Value[p[i]] = 0 then Value[p[i]] := View(p[i]);
lSum1 := lSum1 + Value[p[i]];
for j := Ind[p[i] - 1] + 1 to Ind[p[i]] do
begin
if Value[p[i]] = 0 then Value[p[i]] := View(p[j]);
lSum2 := lSum2 + Value[p[j]];
end;
end;
if lSum1 > lSum2 then
begin
View := lSum1;
Pred[n] := n - 1;
end
else
begin
View := lSum2;
Pred[n] := n - 2;
end;

Tin hc & Nh trng 100 Ton - Tin hc


100 Problems & Solutions Page 165

end;
procedure Calculator(n: Integer);
var
i, j: Integer;
begin
if Pred[n] = n - 2 then
begin
Ok[n] := True; Inc(lSum);
for i := Ind[n - 1] + 1 to Ind[n] do
for j := Ind[p[i] - 1] + 1 to Ind[p[i]] do Calculator(p[j])
end
else for i := Ind[n - 1] + 1 to Ind[n] do Calculator(p[i])
end;
procedure WriteOutput;
var
hFile: Text;
i: Integer;
sView: LongInt;
begin
Assign(hFile, Out);
Rewrite(hFile);
sView := View(p[1]);
Calculator(p[1]);
Writeln(hFile, lSum, ' ', sView);
for i := 1 to n do
if Ok[i] then Writeln(hFile, i);
Close(hFile);
end;
begin
ReadInput;
Prepare;
WriteOutput;
end.

=========================== The End ============================

Tin hc & Nh trng 100 Ton - Tin hc

You might also like