You are on page 1of 166

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 (M N) 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 34 759 17 13 15 10

P2.OUT 256 2 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.

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 V d: P3.INP 225 101XX 24 21 P3.OUT 11 01

Page 4

Qu trnh bin i trng thi c din t trong hnh di y: 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 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 1 1 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 3 33 = 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 3 33 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 a 1 b 2 c 3 d 4 e 5 f 6 g 7 h 8 i 9 j 10 k 11 l 12 m 13 n 14 o 15 p 16 q 17 r 18 s 19 t 20 u 21 v 22 w 23 x 24 y 25 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 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_

Page 13

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 2 4 5 7 2 1 4 6 8 0 4 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 THPT)

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 15

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 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 X M W U

R G S D O K V L P A B Q H C

J I N E F

TT XX MM WW UU

RR OO DD PP QQ

GG SS KK LL VV BB AA HH CC

JJ II NN EE 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.

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 16

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 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 Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions Sample Output 3 This puzzle has no final configuration.

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 0 0, 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 900 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 Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions Third 6.0 7.0 Fourth 10.0 5.0 2 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)

Page 18

Bi 41/2000 - C Othello (Dnh cho hc sinh 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.

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 19

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 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=6, a ra mn hnh ma trn kt qu (c dng nh trong v d). Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions

Page 20

Bi 45/2000 - Cc vng trn Olimpic (Dnh cho hc sinh THPT) 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 Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions baca bcaa caab caba cbaa

Page 21

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. Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions

Page 22

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: 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.

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 23

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.
6 13 20 27 7 14 21 28 1 8 15 22 29 2 9 16 23 30 3 10 17 24 4 11 18 25 5 12 19 26

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 12 2 9 2 5 5 10

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 24

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. 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

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 26

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. 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 Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions 4 Sample Output 20 12 28 24

Page 28

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 x
i

= 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 THCS) 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 THPT) 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 a 1, 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 15.5 14.0 17.5 15.0 10.5 19.0 10.5 12.5 11.5 12.5 16.0 13.5 12.5 13.0 18.5 9.0 10.5 10.5 18.0 0.5 0.1 12.6 16.6 14.1 21.0 16.1 10.6 21.0 13.6 12.6 13.6 15.6 18.1 14.6 17.6 13.1 21.0 13.1 11.6 12.6 21.0

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


10 11 13 5 2 12 14 4 7 16 20 12.9 13.5 14.1 15.0 15.6 16.2 16.8 17.5 19.0 19.6 20.2

Page 40

( 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 7 Tin hc & Nh trng

GUEST.OUT 3 63 100 Ton - Tin hc

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

Page 41

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 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.

Page 43

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 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';

Page 44

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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);

Page 45

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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.

Page 46

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 III. Xt trng hp 2.1: vin bi 4 chnh l Ln cn th ba:

Page 48

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

Page 50

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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

Page 51

100 Ton - Tin hc

100 Problems & Solutions 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

Page 52

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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;

Page 53

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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;

Page 54

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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.

Page 55

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 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;

Page 57

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


WriteOutput; end.

Page 58

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 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;

Page 59

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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;

Page 60

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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

Page 61

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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);

Page 62

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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;

Page 63

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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}

Page 64

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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;

Page 65

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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.

Page 66

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 2 3 ... N 2N N+1 N+2 ... 2N-1 3N-1 3N 2N+1 ... 3N-2 ... ... ... ... ... N2-(N-2) N2-(N-3) N2-(N-4) ... (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 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.

Page 68

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 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.

Page 69

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 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.');

Page 73

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 0 1 2 3 Cch i ch Dy ban u i ch 1 v 3 i ch 5 v 7 i ch 7 v 9 Kt qu 3, 1, 7, 9, 5 1, 3, 7, 9, 5 1, 3, 5, 9, 7 1, 3, 5, 7, 9

Page 74

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 d v x d v x d v x d v x xx vv dd xx dd xx vv dd vv dd xx vv xx vv dd xx xx dd vv xx dd xx dd vv vv vv xx dd xx dd vv xx xx vv dd xx dd dd xx vv vv xx vv dd xx vv dd xx

dd xx vv dd

vv dd xx vv

xx vv dd xx

dd xx vv dd

dd vv xx dd

vv xx dd vv

xx dd vv xx

dd vv xx dd

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions dd xx vv dd vv dd xx vv xx vv dd xx dd xx vv dd vv dd xx vv vv dd xx vv dd xx vv dd xx vv dd xx vv dd xx vv vv xx dd vv xx vv dd xx dd vv xx dd vv dd xx vv xx dd vv xx dd xx vv dd vv xx dd vv vv xx dd vv dd vv xx dd xx dd vv xx xx dd vv xx dd vv xx dd vv xx dd vv vv xx dd vv dd vv xx dd

Page 75

Bi 27/2000 - Bn c (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; Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions 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]); 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

Page 76

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 77

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; 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);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


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

Page 78

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: 0100000 0 0000010 0 0010000 0 0000001 0 0100000 0 0000001 0 1000000 0 0000010 0 0100000 0 0000001 0 0010000 0 0000010 0 0100000 00010000 00000001 10000000 00001000 00001000 00010000 00000001 00100000 00001000 10000000 00000001 00010000 00000100

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 79

0 1000000 00000010 0 0001000 00000001 0 0010000 00001000 0 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 var fo = 'hau.out'; n = 8; A : c : dc1 : dc2 : sn : f : array[1..n,1..n] of byte; array[1..n] of byte; array[2..2*n] of byte; array[1-n..n-1] of byte; integer; 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; 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

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


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

Page 80

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; 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 : var i : string); byte;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


begin

Page 81

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); 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 82

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; 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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:

Page 83

Cng dn 1 3 7 15 31 63 127 255 511 1023 2047 4095 8191 16383 32767 65535 131071 262143 (= 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; Tin hc & Nh trng 100 Ton - Tin hc

Th t 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

S tin 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072

100 Problems & Solutions {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. 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

Page 84

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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.

Page 85

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; 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]);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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.

Page 86

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. 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 fo var fi = = 'input.txt'; 'output.txt';

A : array[1..5,1..5] of char; new,blank : record x,y : integer end;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


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; 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);

Page 87

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


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.

Page 88

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

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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; 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];

Page 89

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 90

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); 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 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;

Page 91

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 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;

Page 92

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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'; '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;

Page 93

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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: 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.

Page 94

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.

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 95

+ 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 Kim gi v kim pht gp nhau lc 2 gi 10 pht. h = 2, s = 10 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 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

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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); End; {-------------------------------------} Procedure Output; Var i,j : byte; Begin Inc(dm); For i := 1 to 15 do write(fout,A[i],' '); writeln(fout); End; {-------------------------------------}

Page 96

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 97

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. 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.

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 98

(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)); While not eoln(f) do begin s[0]:=chr(ord(s[0])+1);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 begin If (ord(s[j])>ord(s[vti])) then begin

Page 99

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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;

Page 100

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; i:integer; Begin Clrscr;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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

Page 101

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; i:=i mod 8; Laybit:=(a[k] shr (7-i)) and 1; End;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 102

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; END. (Li gii ca bn: Nguyn Vit Bng - Lp 10 Tin - Ph thng Nng Khiu HQG.TPHCM)

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 103

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; Begin Fillchar(d,sizeof(d),0); Repeat

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


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 4 1234 0

Page 104

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions (Li gii ca bn Tng Hi Anh - Hi Dng - TP. Hi Phng)

Page 105

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); inc(n); while (s<>'')and(s[1]=' ') do delete(s,1,1);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


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.

Page 106

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 for j:=1 to n do begin

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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; gotoxy(5*(a2),k); inc(mau);

Page 107

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 for k:=1 to n do begin

Page 108

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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; Const out='lichao.out'; Type mang=array[1..6,1..7] of integer;

Page 109

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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; (*---------------------------------------------*) BEGIN clrscr;

Page 110

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions assign(f,out); rewrite(f); dem:=0; Xuli; close(f); END. (Li gii ca bn: Ngc Sn)

Page 111

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 begin write('M ');

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 ; Px,Py: Array[1..4] Of ShortInt ; M,N,S,S1,S2 : LongInt ;

Page 112

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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 ; Begin For i:=1 to 4 do

Page 113

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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) 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.

Page 114

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 115

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 (Dnh cho hc sinh THCS v PTTH) Uses crt; Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions

Page 116

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. (Li gii ca bn Nguyn Ch Thc - Lp 10A1 - Khi chuyn Ton Tin - H S phm H Ni)

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 117

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): Program Bai62; Uses crt; Const fo = 'chenxau.out';

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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; Assign(f,fo);Rewrite(f); for k:=1 to 2 do begin

Page 118

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions d[1]:=dau[k]; Try(2); end; If not found then write(f,'khong co ngiem'); Close(f); END.

Page 119

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); Readln(f,n); For i:=1 to 2*n do begin

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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; t:boolean; Begin clrscr;

Page 120

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions 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)

Page 121

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 5 9 1 3 1 7 2 1 2 5 2 9 3 2 6 10 14 18 22 26 30 34 3 7 11 15 19 23 27 31 35 4 8 12 16 20 24 28 32 36 77 72 67 62 57 52 47 42 37 78 73 68 63 58 53 48 43 38 79 74 69 64 59 54 49 44 39 80 75 70 65 60 55 50 45 40 81 76 71 66 61 56 51 46 41 100 Ton - Tin hc

Tin hc & Nh trng

100 Problems & Solutions

Page 122

3 Program bai66; Uses ctr ; 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. Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions {$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} 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;

Page 123

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions a[i,j]:=a[i,j]-1; end; dec(ma); writeln(f,'tru 1 cot :',j); until ma=0; end; close(f); end; BEGIN docf; lam; END.

Page 124

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

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 125

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; 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 126

Main; Readln; End. (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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions For i:=length(d) downto 1 do Begin x:=ord(d[i])+ord(c[i])-96+nho; 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

Page 127

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions begin If not a[i,j] then begin 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)

Page 128

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 129

Bi 73/2001 - Bi ton chui s (Dnh cho hc sinh Tiu hcv THCS) Hai s cui l 59 v 65. 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 130

Begin if i>n then xet else if not ok then 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'; 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;

var

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions n,sum : integer; ok : boolean; 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

Page 131

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions i:=sum;j:=n; while i>0 do begin 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.

Page 132

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions A:Ma; Q,Qc:Qu; dlt,dq,cq:Integer; 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);

Page 133

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions sinh(dmay,g1,-hgdi,k); sinh(dmay,g2,-hgdi,2*k); 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; 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);

Page 134

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions d2:diem; Begin Sinh(d1,Q[cq],hgdi,k); 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;

Page 135

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions If A[Qc[dq].hg,Qc[dq].cot]='.' then finish(Qc[dq]); Maydi; Inc(dlt); End; Until fin; End; BEGIN Init; Process; END.

Page 136

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 137

end; end; end; 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)

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 138

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 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 p sn fo h =10; = 4; =100; {s nghim mun ghi ra} ='out.txt'; :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)); : MG; : mg1c; : longint; : text;

var

a,dx lap dem f

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 139

procedure init; var k :integer; 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

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions inc(lap[j],1-dx[j,w[k,j]+1]); dx[j,w[k,j]+1]:=1; if lap[j]>4 then 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)

Page 140

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions p =16; sn =100; {s nghim mun hin ra} fo ='output.txt'; 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));

Page 141

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions if use<=5 then ok:=false; end; procedure thu(i:integer); 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

Page 142

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions for v:=1 to N do begin write(a[u,v],#32); 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

Page 143

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 144

dem:=0; for j:=i -1 downto 1 do if a[i]<a[j] then inc(dem); 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; Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions Type point = record x,y:integer; End; 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;

Page 145

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions Stop:=false; While not Stop do Begin 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);

Page 146

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 147

End; Close(f); End; 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 V 1, 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]);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions close(f); end;

Page 148

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions for k:=1 to r do if l[i,j,k]>best then begin 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;

Page 149

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions end; close(f); end; 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:

Page 150

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; Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions procedure docf; var f :text; begin 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)

Page 151

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.

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R+,S+,T-,V+,X+} {$M 16384,0,655360} uses crt; 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

Page 152

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions if a[m,k]<>b[m,k] then begin a:=c;td:=w;exit;end; if dem<best then begin 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.

Page 153

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions Bi 87/2001 - Ghi cc s trn bng (Dnh cho hc sinh THCS)
Procedure bai87; 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)

Page 154

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);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions for i:=1 to 9 do begin fillchar(t,sizeof(t),0); 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)

Page 155

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);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions writeln(g,num(n)); end; close(f); close(g); END. (Li gii ca bn L Vn c - Nguyn Hu - H ng - H Ty)

Page 156

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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 157

If x>=0 then begin i:=x div M1; 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 10 6. 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 fo coso mg ='input.txt'; ='output.txt'; =100; =array[-maxint..maxint]of byte;

type 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions k :longint; begin n:=1000000; 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;

Page 158

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions end; for k:=1 to 3 do dispose(L[k]); 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

Page 159

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 160

if l in a[1-t] then begin a[t]:=a[t]+[f(l+j)]; 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;

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


begin

Page 161

end; procedure test; begin clrscr; write('Nhap n='); readln(n); clrscr; write('n='); xuly; end; BEGIN test; readln; END.

for i:=1 to 1000 do f[i]:=-1; while n>0 do begin i:=1; while fib(i)<=n do inc(i); j:=fib(i-1); write(j,' + '); n:=n-j; end; gotoxy(wherex-2,wherey); writeln(' ');

(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; Tin hc & Nh trng 100 Ton - Tin hc

100 Problems & Solutions dau:=d; cuoi:=i; end; If T<0 then begin T:=0; d:=i+1; end; 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;

Page 162

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions


begin is := 1; js := 1; so := 0; 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.

Page 163

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).

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions

Page 164

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. 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);

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions while t[p[j]] > t[x] do Dec(j); if i <= j then begin 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

Page 165

Tin hc & Nh trng

100 Ton - Tin hc

100 Problems & Solutions View := lSum2; Pred[n] := n - 2; end; 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.

Page 166

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

Tin hc & Nh trng

100 Ton - Tin hc

You might also like