195
 1 CHUYÊN ĐỀ 1  ĐỊNH HƯỚNG TRANG B KIN THC CƠ S TIN HC Trong trườ ng PTTH môn Tin hc đượ c trin k hi gi ng d y cho mi hc sinh. Vi đặc thù ca trườ ng chuyên, nếu xét ta trên các góc độ : Trình độ tiế  p thu, Yêu cu ca chuyên ngành đố i vớ i Tin hc, hc sinh có th đượ c chia thành ba lp đối tượ ng khác nhau: Hc sinh các lớ  p không chuyên tin , Hc sinh lớ  p chuyên tin nằ m ngoài danh sách d ự  tuyể n hoc đội tuyn, Hc sinh đội d ự  tuyể n hoc đội tuyể n. Mi loi đối tượ ng có yêu c u riêng  v kiến thc cn trang b và kéo theo là n i d ung  phương pháp truyn đạt. Vớ i hc sinh chuyên tin (không thu c din  bi dưỡng đội tuyn) và hc sinh không chuyên tin trong phm nhà trườ ng ph thông ch cn dng li ở  vic trang b kiế n thc cơ sở , nhng ki ến thc mà trong mt chng mc nào đó sau khi tt nghi p ph thông hc sinh còn nhớ  đượ c và có tác d ng htr ợ  trong vic hc t p tiếp theo cũng như trong công vic sau này. Mi đố i tượ ng cn có mt khi lượ ng kiến thc cơ sở  riêng. 1.1. KHI KHÔNG CHUYÊN Không chuyên tin là nhóm hc sinh đông đảo nht. Đối vớ i hc sinh không chuyên tin, k  năng l p trình không phi là điu quan tr ng nht. Hc sinh thuc nhóm này ch cn nm đượ c: Tin hc cung c p dch v có hiu qu trong mi lĩnh vc c a cuc sng hàng ngày, Các dch v đó đượ c cung cp trên nguyên lý và cơ sở  nào? Ti sao các d ch v đó mang li hi u qu lao động cao cho con ngườ i? Môi trườ ng tin hc hóa cao tác động đến suy nghĩ và hành độ ng ca chúng ta như thế nào?  Hình 1

Tài liệu giáo viên tin học

Embed Size (px)

DESCRIPTION

Dành cho giáo viên dạy tin học.

Citation preview

  • 1

    CHUYN 1

    NH HNG TRANG B KIN THC C S TIN HC

    Trong trng PTTH mn Tin hc c trin khi ging dy cho mi hc sinh.

    Vi c th ca trng chuyn, nu xt ta trn cc gc :

    Trnh tip thu, Yu cu ca chuyn ngnh i vi Tin hc,

    hc sinh c th c chia thnh ba lp i

    tng khc nhau:

    Hc sinh cc lp khng chuyn tin, Hc sinh lp chuyn tin nm ngoi danh sch d tuyn hoc i tuyn,

    Hc sinh i d tuyn hoc i tuyn.

    Mi loi i tng c yu cu ring v kin

    thc cn trang b v ko theo l ni dung v

    phng php truyn t.

    Vi hc sinh chuyn tin (khng thuc din

    bi dng i tuyn) v hc sinh khng

    chuyn tin trong phm nh trng ph

    thng ch cn dng li vic trang b kin

    thc c s, nhng kin thc m trong mt

    chng mc no sau khi tt nghip ph

    thng hc sinh cn nh c v c tc dng

    h tr trong vic hc tp tip theo cng nh trong cng vic sau ny. Mi i

    tng cn c mt khi lng kin thc c s ring.

    1.1. KHI KHNG CHUYN

    Khng chuyn tin l nhm hc sinh ng o nht. i vi hc sinh khng

    chuyn tin, k nng lp trnh khng phi l iu quan trng nht. Hc sinh

    thuc nhm ny ch cn nm c:

    Tin hc cung cp dch v c hiu qu trong mi lnh vc ca cuc sng

    hng ngy,

    Cc dch v c cung cp trn nguyn l v c s no?

    Ti sao cc dch v mang li hiu qu lao ng cao cho con ngi?

    Mi trng tin hc ha cao tc ng n suy ngh v hnh ng ca

    chng ta nh th no?

    Hnh 1

  • 2

    Khi trnh by mi vn , khng nn i qu su vo chi tit k thut, khng bt

    hc sinh phi nh cc thao tc c th cho tng loi cng vic. iu ch cht l

    nguyn nhn ti sao nng sut lao ng li tng ln, ta c cung cp nhng

    dch v no, nu cha bit hoc qun th tm kim cch tc ng ln h thng

    nh th no t c mc ch c th ca mnh.

    V d, vi chng Son tho vn bn, nhng iu m hc sinh phi nh sau khi

    hc l:

    Cc h thng son tho vn bn cho php ta tch ring 2 phn c lp:

    ni dung vn bn v hnh thc trnh by vn bn,

    C nhiu kh nng tc ng vo hnh thc trnh by: t l cho trang vn

    bn, kiu ch, khong cch dng, . . .

    Cc h thng son tho vn bn khc nhau kh nng cung cp cc dch

    v trnh by, kh nng lm vic vi cc dng ni dung (bng, hnh nh,

    biu , cng thc, v.v. . .),

    H thng cng hin i th cc kh nng ny cng nhiu v cng d s

    dng.

    Trong s cc tnh nng trn, tnh nng quan trng nht v mang li thay i v

    cht lng l vic tch ring ni dung vi hnh thc. Chnh iu ny lm cho

    vic son tho vn bn trn my tnh khc hn vic vit tay trn giy hoc nh

    my ch.

    i su hn na, c th trnh by v c ch hot ng ca h son tho. Vi mi

    vn bn h thng to mt c s d liu qun l. C s d liu cng phong

    ph th kh nng ca h thng cng ln.

    Trm nghe khng bng mt thy, cn phi nu rt nhiu v d minh ha hc

    sinh thy c cc kh nng l c thc.

    Gi thc hnh l lc hc sinh tri nghim li nhng iu nghe, thy, hiu v

    nh. y cng l lc rn luyn k nng tm kim v kch hot cc chc nng c

    th trong trng hp c th.

    Vic so snh cc h thng son tho vn bn khc nhau s cung cp cho hc

    sinh kin thc v l gic tin ha, pht trin ca h thng.

  • 3

    T y ta c th cung cp cho hc sinh kh nng t on nhn v d bo kh

    nng pht trin ca cc loi h thng son tho ni chung nh son tho hnh v

    (photoshop, Microsoft Visio, . . .), son tho nh v videoclip (Movie Maker,

    PowerPoint, . . .), cc h son tho chuyn dng bin tp ti hiu chuyn

    ngnh (ton, l, ha, . . .).

    Nh vy, ch cn thng qua h thng son tho vn bn ta cung cp cho hc

    sinh kin thc v mi loi h thng son tho cho mi loi i tng!

    Ton b chng trnh lp 12 l xem xt li mt cch tng qut ha phn ln cc

    kin thc c.

    Nh vy, kin thc c s khng nhiu. Vi i tng hc sinh ph thng ta,

    phi i t c th n tng qut ha, phi c cc v d c th, nhng phi ht sc

    trnh:

    Ch dn qu nhiu cc thao tc c th,

    Ch dn mt cch ri rc, khng phn loi v h thng ha,

    Yu cu hc sinh nh, thuc qu nhiu cc chi tit c th ca h thng c

    th.

    H SON THO

    Vn bn

    Bng

    Hnh nh

    m thanh

    Kch thc

    Mu

    Cc khun dng b tr

    Hnh ng

    NI DUNG HNH THC

    Ngi dng ch ng

    H thng h tr

    Hnh 2

  • 4

    Tt c cc loi h thng u lun lun hot ng ca theo s :

    Vic dy Exel, Access cng hon ton tng t nh dy h son tho vn bn.

    Tuy nhin mi h thng cn nhn mnh cho hc sinh thy r nhng mt mnh

    v yu ca h thng ang xt, cho hc sinh nh c kh nng v phm vi

    ng dng ca loi h thng ny. l nhng iu ta cn v ch cn t c i

    vi i b phn hc sinh ph thng. Nhng iu ny khng lc hu trong sut

    phn cuc i tip theo ca hc sinh.

    K nng lp trnh khng phi l trng tm i vi cc hc sinh ca nhm ny.

    Tuyt i b phn hc sinh thuc nhm ny s khng c nhu cu t lp trnh

    gii quyt cc vn ca mnh trong tng lai.

    1.2. KHI CHUYN TIN

    c trng c bn ca lp i tng ny:

    Nhiu hc sinh bit v s dng kh thng xuyn cc dch v tin hc,

    C kin thc c s ton tt,

    C kh nng v nhu cu lp trnh.

    Kin thc cn trang b bao gm 2 phn: cc Kin thc chung v Tin hc v C

    s lp trnh. Kin thc chung v Tin hc vn rt cn thit vi loi i tng ny

    CSDL

    H Qun tr CSDL

    Npd liu

    Truy vn

    Kt qu

    Hnh 3

  • 5

    v n s tc ng rt ln ti phn C s lp trnh, lm cho vic lp trnh d dy

    hn v dy c su hn. Cc im mu cht trong phn ny vn l:

    Cc dch v c cung cp trn nguyn l v c s no?

    Ti sao cc dch v mang li hiu qu lao ng cao cho con ngi?

    Mi trng tin hc ha cao tc ng n suy ngh v hnh ng ca

    chng ta nh th no?

    Vi i tng ny cn gii thch su hn v c ch trong hin thc ha cc

    nguyn l v c s . Hc sinh khng cn phi nh, phi thuc nhng kin

    thc ny nhng phi bit ti sao my tnh p ng c yu cu ca ta v p

    ng bng cch no.

    V d, khi ta nhy chut vo mt biu tng no trn mn hnh nn

    (Desktop) ti sao h thng bo i tng c chn hoc h thng kch hot

    cng vic tng ng vi biu tng?

    Nn gii thch cho hc sinh v c ch hot ng ca h thng: mi biu tng c

    biu din di dng mt bc tranh hnh vung. H thng c c s d liu qun l v

    tr cc hnh vung ny trn mn hnh nn v cng vic (chng trnh) tng ng vi

    hnh ny. Khi ta nhy chut, da vo v tr ca chut h thng s xc nh c biu

    tng m ta chn (hoc khng c biu tng no c). Ph thuc vo cch nhy chut

    h thng s bit ta mun chn hay mun kch hot cng vic c chn v c hnh

    ng tng ng: i mu nn ca biu tng hoc kch hot cu ln gi chng trnh

    tng ng. Nu ta ko biu tng sang v tr mi, h thng s cp nht li c s d

    liu qun l Desktop.

    Tt c mi gii thch u hng suy ngh ca hc sinh ti hai :

    Mi cng vic u c c s d liu tng ng (c th rt n gin hoc

    phc tp),

    Vic lp trnh quyt nh tt c!

    Nu hc sinh, c th ngc nhin, nhng khng cn thy b him hay ng ngng

    trc mt dch v no ca h thng th c ngha chng ta thnh cng

    trong vic chun b bc sang phn lp trnh.

    iu ny rt quan trng v:

    Hc sinh thy c l gic ca vn ,

    Thy c vai tr, v tr ca khu lp trnh,

    Thy c vai tr, v tr ca d liu v t chc d liu.

    Vic chuyn sang dy lp trnh s bt kh khan, nhm chn v ri rc. i vi

    hc sinh trong i tuyn tng lai iu ny l ht sc cn thit v hc sinh thy

  • 6

    c tm quan trng ca d liu, t ngang hng vic thit k, t chc d liu

    vi gii thut. Thng thng, hc sinh ch quan tm n gii thut trn quan

    im ton hc thun ty. iu ny l cn thit, nhng ch l mt khu nh trong

    qu trnh gii bi ton.

    Chnh v vy, cc ngn ng lp trnh pht trin hin nay cung cp rt nhiu cng

    c h tr t chc d liu v cc cng c thao tc chun vi cc d liu .

    1.3. HC SINH NNG KHIU

    Kt qu hot ng bi dng hc sinh nng khiu l mt trong s cc ch tiu

    quan trng nh gi hiu qu ca mt trng chuyn.

    Nu xem xt trn quan im cng ngh, qu trnh tc ng ln hc sinh nng

    khiu c 3 khu:

    Pht hin,

    o to,

    Bi dng.

    Pht hin: Tm ra cc hc sinh c tim nng tr thnh hc sinh gii Tin hc.

    o to: Xt ring v mt chuyn mn l trang b cc kin thc c s cn thit

    vi mt hc sinh nng khiu.

    Bi dng: Trang b thm cc kin thc chuyn su, rn luyn v nng cao k

    nng t duy linh hot, sng to.

    Trong phn ny ta ch xem xt cc vn lin quan ti khu o to v cng

    ch xem xt gc trang b cc kin thc c s. y l cng vic kh nhm

    chn , bun t. Khi lng kin thc thuc din c s kh ln, t thay i trong

    mt khong thi gian di, s v trnh t truyn t tng i n nh, mt

    bng kin thc ca hc sinh cha ng u. Vi thc t hin nay ta c khng

    qu 4 thng cho vic trang b kin thc c s v phi lm vic ny an xen vi

    vic bi dng, nng cao k nng ng dng sng to i vi cc kin thc c s

    trang b trc . Nh vy, cn phi xc nh r, nhng kin thc g thuc

    loi c s, tc l nhng th phi trang b n tn rng cho mi hc sinh (trong

    i tuyn hoc d tuyn). Vi mi m hnh ton hc cho mt gii thut c s

    cn chun b nhiu bi ton tng ng vi ni dung pht biu khc nhau

    trnh s nhm chn xut hin trong hc sinh, c bit l nhng i tng

    qua khu o to ca nm trc.

  • 7

    1.3.1 NH HNG

    Cc cuc thi Olympic Tin hc c trin khai rng ri gn ht cc nc trn

    th gii hng ti cc mc ch:

    y mnh phong tro dy v hc Tin hc nhm p ng cc yu cu ca

    cuc sng ang c tin hc ha su rng v vi tc cao trong mi

    lnh vc,

    Pht hin cc nhn t ni bt o to v khai thc ngun nhn lc nh

    cao, c tri thc v c tay ngh theo kp s pht trin ca l thuyt v yu

    cu ca thc t.

    Vic o to, bi dng hc sinh gii Tin hc chu tc ng rt nhiu ca hai

    yu t:

    S pht trin ca l thuyt,

    S pht trin ca cng c Tin hc.

    C th thy r xu hng dy v hc Tin hc cho n nay chia thnh ba giai

    on:

    Giai on I: nhng nm cui ca th k XX,

    Giai on II: Thp k u tin ca th k XXI,

    Giai on III: Thp k th 2 ca th k XXI, tc l nhng nm hin ti.

    giai on I, ngnh Tin hc mi tch ra v pht trin thnh mt ngnh khoa

    hc c lp. Ngi ta tp trung mi sc lc vo vic xy dng nn mng cho

    mt ngnh khoa hc mi, c gng tm cch gii quyt c cc lp bi ton

    truyn thng xut hin khi tip cn bi ton trn quan im ton hc. Vic

    nm vng cc kin thc ton hc l iu kin ch yu gii quyt cc bi ton

    tin hc. Ngoi ra cn phi lu ti cc rng buc t nhin v b nh nh v tc

    tng i thp ca my tnh lc by gi. l s tip tc ca t duy nhng

    nm 70 80 ca th k 20.

    V d, mt vi trong nhng bi kh ca nhng nm 90:

    Bi 6. IOI 1990 Belarus

    Cho cc s nguyn a v n (n < 100). Gi thit ta c mt ngn ng lp trnh ch c th

    thc hin php gn v php nhn. Hy khi to chng trnh tnh b = an vi s php

    nhn cn thc hin l t nht.

    V d, vi n = 13, chng trnh c dng nh sau (trong cp ngoc {} l thng tin ch

    thch):

    X1 := a; {= a}

  • 8

    X2 := X1*X1; {= a2}

    X3 := X2*X2; {= a4}

    X4 := X3*X1; {= a5}

    X5 := X3*X3; {= a8}

    X6 := X5*X4; {= a13

    }

    B := X6;

    Phn tch: Xt n dng biu din nh phn, n = 1310 = 11012. Gi m l s ch s

    c ngha trong dng biu din nh phn ca n, k l s lng bt bng 1, s php

    nhn phi thc hin l (m-1)+(k-1).

    C th d dng xc nh s lng bin trung gian cn s dng v cch tnh gi

    tr cc bin trung gian .

    Nhn xt: Kch thc bi ton rt nh, ph hp b x l 8 bt ph bin thi k

    (PC XT).

    Vo na sau ca nhng nm 90 kh ca bi ton bt u thay i:

    Bi 6. IOI 1996 Hungary HNH VUNG K DIU

    Tip theo s thnh cng ca khi lp phng ni ting ng Rubik xut phng n

    phng ca tr chi ny. l mt tm nha c ghp t 8 hnh vung thnh 2 hng,

    mi hnh vung c mt mu, nh s t 1 n 8 theo chiu kim ng h, bt u t hnh

    vung trn tri (Xem phn bn tri ca hnh 1). Cu hnh ny c gi l cu hnh ban

    u.

    C 3 php bin i c s vi tm

    nay:

    A i ch 2 hng trn v

    di,

    B Chuyn dch vng trn

    cc ct sang phi mt v tr,

    C - Chuyn dch vng trn 4

    hnh vung gia theo chiu kim ng h.

    Tt c cc cu hnh khc nhau ca

    tm nha u c th nhn c t

    cu hnh ban u bng cch p dng

    cc php bin i c s.

    Hy vit chng trnh xc nh xc nh dy bin i c s a tm nha t cu hnh

    ban u v cu hnh ch cho trc (Yu cu A). Bn s nhn thm 2 im thng nu

    s php bin i tm c khng vt qu 300 (Yu cu B).

    D liu: Vo t file vn bn INPUT.TXT gm mt dng cha 8 s nguyn xc nh cu

    hnh ch.

    4

    1

    1 2 3

    5

    1

    8 7 6

    4

    1

    1 2 3

    5

    1

    8 7 6

    4

    1

    1 2 3

    5

    1

    8 7 6

    5

    1

    8

    7

    6

    4

    1

    1 2

    3

    B

    A

    Hnh 4

  • 9

    Kt qu: a ra file vn bn OUTPUT.TXT, dng u tin cha s nguyn m s php

    bin i ca dy tm c, mi dng trong m dng sau cha mt k t xc nh tn php

    bin i. Cc php bin i a ra theo trnh t thc hin.

    V d:

    INPUT.TXT OUTPUT.TXT

    2 6 8 4 5 7 3 1 7

    B

    C

    A

    B

    C

    C

    B

    Phn tch: Gi R = (r1, r2, r3, r4, r5, r6, r7, r8) l vc t m t trng thi ca Rubic

    phng. R l mt hon v ca cc s t nhin t 1 n 8. Bng vic p dng cc

    php bin i cho ta c th lm cho R nhn gi tr l hon v bt k. Nh

    vy, s trng thi khc nhau ca Rubic l 8! = 40320.

    Ngy nay, vi cc cng c phn cng v phn mm hin i, y l mt bi

    ton loang n gin.

    Nhng thi k cui nhng nm 90, cc cng c ch cho php s dng b nh

    64KB tnh + 64KB ng, tc my tnh ph bin 33MHz y l mt bi ton

    kh. Cn phi kho st, tm cc php bin i macro c s, m t li gii qua

    cc php macro ny, khai trin macro v rt gn, tuy khng nhn c dy php

    bin i ngn nht, nhng dy bin i cng ngn hn nhiu so vi gii hn

    thng 300.

    Chng ta t c nhng kt qu rc r trong thi k ny v i ng gio

    vin tin hc phn ln xut thn t gio vin chuyn ngnh ton. Hc sinh ca

    chng ta c trang b kin thc c s v ton kh tt.

    Giai on II t nhng nm 2001 n 2007, s tin b v cng ngh v s ph

    cp ca cc h thng phn mm tin tin a n nhng s chuyn dch

    trong vic o to chuyn gia trong lnh vc tin hc. iu ny dn n nhng

    thay i trong cng tc pht hin, o to v bi dng hc sinh gii tin hc.

    Do ni dung thi Tin hc Quc t cng c nhiu thay i. Cc kin thc gii

    thut c coi l nh cao trc y by gi tr thnh bng cu chng

    m ai cng phi bit v phi thuc. Nhng gii thut phc tp, t dng th khng

  • 10

    nht thit phi thuc, nhng bt c ai v lc no cng c th tra cu, tm kim

    chng trn Internet khi cn thit. S thng minh v tnh sng to by gi phi

    th hin khng phi ch bn thuc nhiu hay t cc gii thut khc nhau, cng

    khng phi bn ci t chng nhanh ti mc no. Th thch by gi l ch

    bn c th tm ra nhng gii php hu hiu gii quyt mt cch c hiu qu cc

    bi ton cc vn c m hnh ton hc n gin nhng c kch thc ln hay

    khng?

    t c mc ch ngi lp trnh phi bit tn dng ti a kh nng m

    phn cng v h iu hnh cung cp. Cc h thng lp trnh mi nh Free

    Pascal, Dev C++ (nhng phin bn u tin) to iu kin ngi dng

    khai thc c ti a kh nng ca phn cng.

    giai on ny, gii mt bi ton olympic thc cht ta phi xy dng mt c

    s d liu (CSDL) nh, t chc qun l v truy vn ti CSDL tm ra li

    gii cn thit.

    c im c bn ca s trn l qu trnh gii bi ton c chia thnh 2 giai

    on phn bit:

    Ghi nhn d liu,

    Khai khong d liu (Data Mining).

    Vic ghi nhn d liu khc vi vic nhp thun ty l thng thng d liu

    c lu li sau khi qua mt s php bin i n gin. Trong rt nhiu

    Hnh 5

    D liu vo

    Np d liu

    Kt

    qu

    Ghi nhn d liu

    CSDLTruy vn

    Khai khong d liu

  • 11

    trng hp d liu c n v lu tr theo cm, bao gm gi tr v cc thuc

    tnh. Cm d liu ph bin hn c l gi tr v th t xut hin.

    Phn khai khong d liu i hi s linh hot v sng to cao ca ngi lm.

    m bo hiu qu cao trong khai khong v truy vn nhiu lp bi ton i

    hi phi s dng cc cu trc d liu nh cc loi cy nh phn, cy qun l

    interval, cy tin t, v.v. . ., ngi lp trnh phi bit t chc v qun l stack,

    heap, hng i, hng i hai u, hng i u tin , . . .

    Tt c nhng iu ny lm thay i mt cch ng k n ni dung v

    phng php trang b kin thc c s cho hc sinh.

    ng tic l ti tn nm 2007 khi th gii i ht chng ng quan trng ny

    th chng ta mi c php chnh thc t chn ln mnh t in y du

    chn ca nhng ngi tin phong, i vo con ng vn by gi tr thnh k

    nim p ca nhng ngi i trc.

    giai on III, tc l nhng nm gn y, trong danh mc yu cu i vi

    ngi lp trnh c thm cc i hi mi:

    Khng nhng bn phi ng vng trn nn tng ca phn cng v h

    thng m cn phi bit khai thc ti a kh nng ca cng c lp trnh.

    C th, bn phi khai thc c trit mt mnh ca cc th vin ca

    h thng lp trnh c trong tay,

    C kin thc c s ton hc vng v su,

    Trin khai ng dng gii thut kp: kt hp nhiu gii thut c s n

    trong vic t chc d liu,

    Nng cao tnh hon thin ca chng trnh: chng trnh phi cho kt qu

    ng v x l c hiu qu vi tng lp d liu (ca bi ton).

    on nhn hng gii v tm c gii thut c hiu qu hc sinh cn c

    trang b:

    C s ton hc su v rng hn,

    C k nng trin khai mt gii thut vi vic ng dng cc loi cu trc

    d liu khc nhau v phm vi hiu qu ca cc cch trin khai ,

    K thut lm vic vi mt s lp d liu c th nh hon v cc s t 1

    n n, tp hu hn cc s nguyn khc nhau tng i mt . . .

    Trong nhiu trng hp chng trnh gii bi ton khng n thun l mt h

    qun tr CSDL m l mt h qun l c s tri thc. Nh vy i tng cn

    chun b khng n thun l mt CSDL m l mt CSDL cng vi mt c s tri

  • 12

    thc. Nh vy chng trnh gii trn thc t l mt h chuyn gia nh. Phn ln

    cc bi ton loi ny thuc lp bi ton giao tip ngi my (interactive task).

    Trn th gii, loi bi ton ny c a vo ngy cng nhiu trong cc k thi

    quc t, quc gia v khu vc. bt u xut hin cc bi ton khng thuc

    loi giao tip ngi my nhng vn i hi chin lc tm kim ng.

    Hc sinh khng nhng phi bit cc gii thut khc nhau cho tng lp bi ton

    m ngoi vic nh gi phc tp cn phi hiu su v cc thuc tnh lin quan

    ti gii thut hoc cc tnh cht ton hc ca nhng i lng s dng trong gii

    thut. V d, v s Fibonacci, ngoi cch tnh theo nh ngha Fn = Fn-1 + Fn-2 (n

    2) hc sinh cn bit cc cch tnh khc, bit c tc tng ca cc s trong

    dy l xp x 1.618.

    Qu thi gian ging dy khng nhiu, v vy cn cn nhc k khi la chn ni

    dung, phng php v trnh t truyn t kin thc c s cho hc sinh. y l

    khi lng kin thc cn trang b trong qu trnh ging dy chung v ch yu l

    trong giai on lm vic vi i d tuyn. Khi lng kin thc phn ny rt

    ln, nhng n nh trong khong thi gian di v quyt nh cht lng, hiu

    qu ca vic bi dng i tuyn sau ny. Chnh v vy n cn phi c chun

    b ht sc chu o v chi tit.

    i vi i d tuyn, mi chuyn s l tng trnh by bao gm cc ni

    dung:

    M hnh ton hc: pht biu bi ton di dng ton hc thun ty,

    C s ton hc ca gii thut,

    Cc cch hin thc ha gii thut:

    Hnh 6

  • 13

    Cu trc d liu,

    S x l,

    Chng trnh,

    phc tp,

    Cc loi bi ton c cng m hnh ton hc,

    Mt s bi ton ng dng.

    Trnh t truyn t khng quan trng, su chuyn mn trong tng mc ph

    thuc vo thi lng cho php, vo kh nng tip thu ca nhm hc sinh c th.

    Phn S x l l trng tm ca ton b ni dung trnh by. Ni chung, mi

    s x l i hi mt cch t chc d liu ring. N ph thuc nhiu vo

    cng c lp trnh, ph thuc vo cng c x l m h thng lp trnh cung cp

    i vi loi d liu chn. y gii thut c trnh by li trn ngn ng

    ca d liu. K nng trnh by gii thut trn ngn ng ca d liu l im yu

    ca phn ln hc sinh. Vic rn luyn k nng ny cn quan trng hn lp

    trnh! Nu hc sinh trnh by tt mt gii thut no trn ngn ng d liu th

    thm ch khng nht thit phi lp trnh.

    To thi quen v k nng trnh by gii thut trn ngn ng d liu l mt qu

    trnh. to c thi quen th phi tun th nguyn tc Vn n v luyn:

    thng xuyn, lin tc yu cu hc sinh tp trnh by. Bn cnh vic trnh by

    gii thut vi cc bi mi cn n li cch trnh by cc bi lm. Mt trong

    nhng im mu cht c th trnh by c gii thut trn ngn ng d liu

    l ni c mt cch r rng, ngn gn v tuyt i chnh xc vai tr, ngha

    ca cc d liu dng trong gii thut. Vic trnh by ny c thc trn ngn

    ng t nhin v ton hc, v vy tuyt i trnh vic c cu lnh ca chng

    trnh!

    V d: Chuyn v s Catalan.

    Bi ton:

    Xt dy s nguyn A = (a0, a1, a2, . . ., a2n) tha mn cc iu kin:

    ai 0, i = 0 2n,

    |ai ai-1| = 1, i =1 2n.

    Yu cu: Cho s nguyn n (0 n 50). Hy tnh s lng dy s A khc

    nhau tha mn cc iu kin nu.

  • 14

    D liu: Vo t file vn bn CAT.INP gm nhiu dng, mi dng cha

    mt s nguyn n.

    Kt qu: a ra file vn bn CAT.OUT, mi kt qu a ra trn mt

    dng di dng s nguyn.

    V d:

    CAT.INP CAT.OUT

    2

    6

    4

    2

    132

    14

    C s ton hc:

    Vi n cho trc, gi s lng dy A tm c l cn. Dy s C = (c0, c1, c2, . . .)

    c gi l dy s Catalan (theo tn nh ton hc B Eugne Charles Catalan).

    S ci c gi l s Catalan.

    S Catalan thng gp trong mt lot cc bi ton t hp khc nhau.

    Nhng s u tin ca dy s Catalan l:

    1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, . . .

    Cc cch tnh s Catalan cn:

    i. , trong l t hp chp k ca n,

    ii.

    iii.

    iv.

    n

    k

    nk

    knC

    2

    v. S lp:

    C0 = 1, Cn =2(2n-1)

    n+1Cn-1

  • 15

    vi. Tnh gn ng:

    S tnh ton:

    Mi cch tnh ph hp vi mt s loi bi ton khi lm vic vi s Catalan. Cc

    cch tnh th 2 v th nm ch i hi dng cc php cng v nhn. iu ny

    thch hp vi n ln v Cn tng rt nhanh theo n (cng thc 6).

    Cch tnh th 5 c phc tp cao nht, nhng li cung cp y thng tin

    nht v dy s catalan cng nh vic phn b cc cu hnh to ra mt s ca

    dy.

    Mt s bi ton t hp c kt qu l Cn:

    - S lng biu thc ngoc ng c th xy dng t n cp ngoc trn ( v ),

    v d, vi n = 3 ta c 5 biu thc:

    ((())) (()()) (())() ()(()) ()()()

    - S cy nh phn y khng ng cu c n+1 nt l (cy nh phn m mi

    nt nu khng phi l l th c ng 2 nt con):

    - S ng i t im ta (0, 0) ti im ta (n, n), qua cc im nguyn

    ca li vung kch thc nn, ch sang phi v ln trn, khng vt qua

    ng cho ni 2 im (0, 0) v (n, n):

    p0 = 1, pi=0, i =1, 2, . . ., n

    i = 1 n

    j =1 i

    pi=pi+pi-1cn=pn

    Hnh 7

    Hnh 8

  • 16

    - S cch chia mt a gic li n+2 nh thnh cc tam gic bng cc ng cho

    khng c im chung bn trong a gic:

    - S cch ph ci bc hnh bc thang cao n bng n hnh ch nht, cc hnh

    ch nht khng c din tch chung khc khng:

    - S lng cc hon v t 1 n n sp xp c bng stack (c th chng minh

    c rng mt hon v A = (a1, a2, . . ., an) cc s t nhin t 1 n n c th sp

    xp c bng stack khi v ch khi khng tn ti i < j < k sao cho ak < ai < aj).

    Bi tp ng dng:

    Hnh 9

    Hnh 10

    Hnh 11

  • 17

    Bi 1. Xt tp cc biu thc ngoc ng cha n cp ngoc trn. Cc biu thc

    c sp xp theo th t t in thnh mt danh sch, trong k t ) c

    quy nh c th t t in nh hn (. Cc biu thc c nh s t 1 tr i.

    V d, vi n = 5 ta c:

    S th t Biu thc

    1 ()()()

    2 ()(())

    3 (())()

    4 (()())

    5 ((()))

    Cho S biu thc ngoc ng c n cp ngoc.

    Hy xc nh biu thc th k sau biu thc S trong danh sch.

    D liu: Vo t file vn bn BR_LIST.INP:

    Dng u tin cha 2 s nguyn n v k (1 n 100, 1 k 1018),

    Dng th 2 cha biu thc S.

    D liu m bo tn ti li gii.

    Kt qu: a ra file vn bn BR_LIST.OUT gm mt dng cha biu thc tm

    c.

    V d:

    BR_LIST.INP BR_LIST.OUT

    3 2

    (())() ((()))

    Bi 2. n v tn binh c n ngi. Ton n v khng ai ging ai, mi ngi c

    mt chiu cao ring. Vin thng s ph trch hun luyn c mt thi quen kh

    c o: c 9 gi sng, sau lc ngh gii lao gi bui tp, ra lnh tp hp n v

    thnh mt hng dc, ai mun ng ch no trong hng cng c! Vin

    thng s s i t u hng n cui hng, ch nh 3 ngi i gip nh bp nu

    n. Nhng ngi c ch nh s bc sang phi mt bc. Nu 3 ngi c

    ch nh ny lm thnh mt hng c chiu cao tng dn nu nhn t u ca

    hng, thng s s rt hi lng. Hm n v s c ngh i n tra ng

    gi. Nu thng s khng chn c 3 ngi va theo tiu chun trn th thi

    ri, kh nng c ngh v n n cm ng gi ng bng kh nng bn b mt

    con c mp mc vi rt cm g H5N1 tn cng gia Xa ha ra! M d nu c

    c v ng gi th chc g cn c sc m n.

  • 18

    Tuy vy, nu cn thn mt cht th kh nng thot c con thnh n ca

    thng s l rt ln.

    Hy tnh s kh nng xp hng bao gi cng tm c 3 ngi theo yu cu

    v a ra theo m un m.

    D liu: Vo t file vn bn LINE_UP.INP gm mt dng cha 2 s nguyn n

    v m (3 n 25 000, 1 m 2109).

    Kt qu: a ra file vn bn LINE_UP.OUT mt s nguyn s kh nng tm

    c theo m un m.

    V d:

    LINE_UP.INP LINE_UP.OUT

    5 1000 78

    Cc gii thut c s

    Ngay mc i d tuyn hc sinh vn cn phi c trang b cc gii thut c

    bn nh gii thut Dijsktra tm ng i ngn nht, gii thut Kruskal xc nh

    cy khung, gii thut so khp KMP, . . .

    Cc gii thut cn c trang b 2 mc:

    C s ton hc,

    C s lp trnh.

    Mc c s ton hc cung cp cho hc sinh cc kin thc v bn cht ca s

    x l d liu, cch hin thc ha trc tip cc s , cc cu trc d liu

    cn t chc. Ni chung, gii thut mc c s ton hc d hiu, d lp trnh,

    nhng c phc tp kh cao (thng thng l O(n2) hoc O(nlogn)).

    Mc d l c s ton hc nhng sau phn ny hc sinh vn phi bit v nh cc

    hm, th tc hin thc ha gii thut. Cc hm, th tc ny nn gii thiu

    trc tip cho hc sinh cng vi cc tiu xo t chc d liu v x l (nu c).

    C s lp trnh l phn quan trng nht. Cc vn chnh trong trang b c s

    lp trnh:

    Cc loi cu trc d liu m h thng lp trnh h tr,

    L gic nng cao hiu qu ca cc gii thut,

    Cc gii thut c hiu nng cao.

    Cc kin thc ny cn c trang b cho hc sinh d tuyn v i tuyn hc

    sinh c th:

  • 19

    Khai thc ht sc mnh ca cng c mnh c,

    Nm bt c t duy sng to trong vic tm kim v thit k gii thut,

    Khng mt nhiu thi gian v cng sc i vi cc kin thc tr thnh

    kinh in.

    Vic cung cp cc kin thc v cu trc d liu m h thng lp trnh h tr

    khng n thun hc sinh trc tip s dng trong bi ca mnh m quan

    trng hn l m rng th gii quan ca hc sinh v cu trc d liu, to hnh

    mu hc sinh c nh hng trong vic thit k, t chc d liu v xc nh

    b cng c x l d liu . Trn thc t, trong phn ln cc trng hp, khi

    gii bi ton olympic ngi lp trnh thng t thit k cc cu trc d liu

    tng ng ph hp ti a vi nhu cu x l ca mnh. V vy kin thc

    phn ny mang tnh cht nh hng, gip cho hc sinh c tm nhn chin lc

    trong qu trnh on nhn v thit k gii thut.

    Cc h thng lp trnh hin nay nh Free Pascal 2.6, Dev C++ 4.9.9 u cung

    cp nhng th vin khng l h tr ngi dng v u c th mang li nhng

    hiu qu tng ng trong lp trnh.

    Cc h lp trnh trn C++ u cung cp cc cng c chun ha khi to v x l

    cc cu trc d liu thng dng nh stack, heap, vector, deque, dng xp hng

    u tin v. v. . . V d, vi cu trc d liu c kiu bt k (c m bo bi h

    thng) php c.push() lun lun l np d liu vo cui cu trc, c.pop()

    xa phn t cui cng khi cu trc, c.front() ly gi tr ca phn t u

    cu trc ra x l, . . . Ty tng loi cu trc, c th c cc php x l chun

    khc (np vo u/cui cu trc, xa phn t u/cui cu trc, c phn t

    u/cui cu trc, truy nhp vo phn t bn trong, v. v. . .

    c.push_back() c.pop_front()

    c.back() c.front()

    Cu trc c

    c.pop()

    c.push()

    Hnh 12

  • 20

    Ngoi ra h thng cn cung cp mt b cc php x l phong ph tc ng ln

    cu d liu khai bo.

    Do tnh chun ha cao, vic gii thiu v nm bt cc cng c ny khng i

    hi qu nhiu thi gian v cng sc trong ging dy cng nh hc tp.

    Vn quan trng l nm c vai tr, v tr cc cu trc c th p dng

    ng lc, ng ch v ng mc, m bo hiu qu lp trnh cao.

    Trong CSDL cho cc bi ton olympic (v nhiu bi ton thc t khc) nhng

    thuc tnh c dng nhiu nht l gi tr v s th t. C++ cung cp kiu d

    liu pair (cp) mt cng c ht sc thun tin v hiu qu lu tr v x

    l cp d liu c lin quan l gic ti nhau.

    Mt s gii thut c s:

    Bn cht v s tip cn trong ging dy cng nh hc tp v trin khai ng

    dng khng thay i, nhng cht lng gii thut thay i ph thuc vo cu

    trc d liu c la chn v cch gii quyt cc bc bt buc c tnh cht

    tin nh ca gii thut hoc lp gii thut . Thng thng mt s bc tr

    thnh nhng bi ton con thuc lp gii thut khc. Nh vy, yu t gii thut

    kp xut hin ngay c trong vic xy dng c s.

    Ni dung ca phn trang b kin thc c s:

    Bn cht ca vn ,

    Cc cch gii quyt,

    Gii thut hiu qu nht.

    Bn cht ca vn : Xt cc vn n gin, thng gp trong vic gii quyt

    cc bi ton, gii thiu vai tr, v tr ca bi ton trong l thuyt gii thut. Vn

    c th c xem xt trc tip t m hnh ton hc.

    Cc cch gii quyt: Nu ngn gn cc gii thut n gin, hin nhin, d lp

    trnh nhng c phc tp cao (O(n3), O(n2)). Phn ny h tr cho hc sinh

    hiu su hn bn cht ca bi ton, thy c l gic pht trin, t :

    Nhanh chng nm bt c t tng ca gii thut hiu qu nht s xt,

    Trang b cho hc sinh phng php t duy sng to, ng li ci tin,

    pht trin gii thut.

    Cc cch gii quyt hin nhin, tm thng ny vn c tc dng nht nh

    trong lp trnh, c bit khi cc bi ton (hoc bi ton con) c kch thc nh.

  • 21

    Do tnh n gin ca vn , vic lp trnh cho cc gii thut c th giao cho

    hc sinh nh cc bi tp ph, b sung.

    Gii thut c hiu qu nht: Ni dung ca phn ny l gii thiu cc gii thut

    phc tp O(nlogn) hoc O(n) gii quyt bi ton c s nu.

    Hc sinh cn nm c:

    tng ci tin: Khu no ca qu trnh x l cn ci tin,

    Cu trc d liu v s x l,

    Lp trnh thnh tho gii thut ang xt.

    Vic nm c tng ci tin l iu quan trng v n l kim ch nam hc

    sinh c cch tip cn sng to, linh hot vi cc bi tp, bi thi v cc bi ton

    thc t sau ny. l mt trong s cc mc tiu quan trng trong vic o to,

    bi dng hc sinh nng khiu.

    Quy hoch ng:

    Vi mi bi ton ng dng gii thut quy hoch ng, ta vn phi tr li r

    rng, chnh xc 6 cu hi:

    Tn v ngha cc bin phc v s lp,

    Cch khai bo cc bin ,

    S (cng thc) lp chuyn t mt bc sang bc tip theo,

    Gi tr u ca cc bin tham gia tnh lp,

    Tham s iu khin lp: thay i t u n u,

    Kt qu: u v lm th no dn xut ra.

    Cc cch tr li khc nhau s dn n nhng gii thut khc nhau c v cch

    thc hin ln phc tp.

    V d, bi ton tm dy con tng dn di nht:

    Cho dy s nguyn a1, a2, . . ., an. Hy tm dy con nhiu phn t nht ca dy

    cho to thnh mt dy tng dn nu gi nguyn trnh t trc sau nh

    trong dy ban u.

    y l bi ton quan trng thng gp trong nhiu lnh vc khoa hc khc nhau

    v trong thc t.

    Gii thut I: Quy hoch ng cu phng.

    c im gii thut:

    phc tp O(n2),

  • 22

    n gin, ph hp vi vic gii thiu t tng quy hoach ng,

    D lp trnh,

    Thch hp vi cc bi ton kch thc nh.

    D liu: dng 2 mng p1, p2, . . ., pn v d1, d2, . . ., dn, trong :

    pi ch s ca phn t trc phn t ai trong dy con tng dn di nht

    cha phn t ai trong dy a1, a2, . . ., ai,

    di di dy con tng dn di nht cha phn t ai trong dy a1, a2, . . .,

    ai.

    Khai bo: cc mng p v d c th khai bo tnh v kch thc nh v gii thut

    s s dng ht cc phn t trong mng, t 1 n n. Mng d nn khai bo t 0.

    S lp: Gi thit tnh c pj v dj, j = 1 i-1.

    Tm k tha mn dk = max{dj| aj < ai, j = 1 i-1}. Nu khng tn ti aj< ai

    th k = 0.

    Gn pi = k v di = dk + 1.

    Gi tr u: p1 = 0, d0 = 0, d1 =1.

    Phm vi lp: Cng thc lp c tnh vi i thay i t 2 ti n.

    Kt qu:

    Gi m l di dy con tng dn di nht, m = dk = max{di, i = 1 n}.

    Dn xut dy con tm c: cc phn t ca dy con, theo th t t ln

    n nh l a[k], a[p[k]], a[p[p[k]]], . . .

    dn xut cc phn t theo gi tr tng dn ta c th:

    Np cc gi tr vo stack (khi cn khai bo thm mng mi) sau

    a t stack ra,

    Dng mng d nh du cc phn t thuc dy con v sau duyt t 1

    n n a ra cc phn t ai tng ng vi di c nh du:

    Hnh 13

  • 23

    Lu : thun tin cho vic dn xut dy con, trnh phi nh du ta c th

    duyt t n v 1 v thay i mt cch thch hp cch tnh dk.

    on chng trnh tng ng vi phn chnh ca gii thut:

    Gii thut II. Quy hoch ng v tm lim nh phn.

    c im gii thut:

    phc tp O(nlogn),

    Lp trnh tng i phc tp,

    L m hnh mu cho gim phc tp cho rt nhiu bi ton quy

    hoch ng.

    D liu: dng 2 mng P= (p1, p2, . . ., pn) v M = (m1, m2, . . ., mn), trong :

    pi ch s ca phn t trc phn t ai trong dy con tng dn di nht

    cha phn t ai trong dy a1, a2, . . ., ai,

    mj v tr ca phn t ak nh nht dy con tng dn c di ng

    bng j trong dy a1, a2, . . ., ai.

    Nu cn dn xut dy con: cn thm mng B = (b1, b2, . . ., bn). Tn ti

    cch vng trnh vic s dng mng ny!

    Khai bo: mng p c th khai bo tnh v gii thut s s dng tt c cc phn t

    t p1 n pn, mng m c th khai bo ng (v d, kiu vector) v s phn t

    c s dng ng bng di ca dy con tm c. Mng B c th khai bo

    di dng mng ng hoc stack.

    S lp: Gi thit tnh c pj v mj, j = 1 i-1. di dy con tng dn

    di nht hin ti l L.

    Hnh 14

  • 24

    Trng tm ca gii thut l cp nht M: tm kim nh phn j dng ln nht: j L v am[j]

  • 25

    Hnh 15

  • 26

    Hnh 16

  • 27

    Ghi ch: vi cc b d liu ngu nhin c n = 400 000, thi gian thc hin

    chng trnh xp x c:

    Chng trnh PASCAL: 0.117 giy (Processor Core i7 1.80GHz ),

    Chng trnh C++: 0.201 giy (Processor Core i7 1.80GHz).

    Hm tin t

    Xt dy s nguyn A = (a1, a2, . . ., an). Dy con cc phn t lin tip nhau B =

    (ai, ai+1, . . ., aj) c gi l tin t ca A nu ai = a1, ai+1 = a2, . . ., aj = aj-i+1 (i >

    1).

    V d, vi dy A = (5, 3, 5, 5, 3, 4, 5, 3, 5, 5, 3, 6) ta c cc dy tin t nu

    hnh bn.

    Dy s P = (p1, p2, . . ., pn) gi l hm tin

    t ca A nu pi l di ca dy tin t di

    nht kt thc bi phn t ai-1, p1 = 0.

    Vi v d trn ta c P = (0, 0, 0, 1, 1, 2, 0,

    1, 2, 3, 4, 5).

    Yu cu: Cho n v dy s A. Hy xc nh

    hm tin t P.

    D liu: Vo t file vn bn FPRE.INP:

    Dng u tin cha s nguyn n (1

    n 106),

    Dng th 2 cha n s nguyn a1, a2, . . ., an (|ai| 109).

    Kt qu: a ra file vn bn FPRE.OUT n s nguyn xc nh hm P.

    V d:

    FPRE.INP FPRE.OUT

    12

    5 3 5 5 3 4 5 3 5 5 3 6

    0 0 0 1 1 2 0 1 2 3 4 5

    5, 3, 5, 5, 3, 4, 5, 3, 5, 5, 3, 6

    Cc dy tin t

    Hnh 17

  • 28

    Gii thut phc tp O(n)

    Program P7_50;

    Uses SysUtils,DateUtils;

    const tfi='FPRE.INP';

    tfo='FPRE.OUT';

    Var fi,fo:text;

    a,p:array[0..1000000]of longint;

    n,i,j:longint;

    x1,x2,x3,x4,x5,mm1,mm2,ss1,ss2:word;

    BEGIN

    DecodeDateTime(Now,x1,x2,x3,x4,x5,ss1,mm1);

    assign(fi,tfi); reset(fi);

    readln(fi,n);

    for i:=1 to n do read(fi,a[i]);

    close(fi); fillchar(p,sizeof(p),0);

    i:=3;j:=0;

    while i0 then j:=p[j]

    else begin p[i]:=0; inc(i) end;

    Hnh 18. S khi ca gii thut. Cc phn t nh s bt u t 0.

  • 29

    Hnh 19. Chng trnh C++. Cc phn t nh s bt u t 0.

    assign(fo,tfo); rewrite(fo);

    for i:=1 to n do write(fo,p[i],' ');

    DecodeDateTime(Now,x1,x2,x3,x4,x5,ss2,mm2);

    writeln(fo);

    i:=ss2-ss1; j:=mm2; j:=j-mm1;

    if j>n;

    for(int i=0;i>a[i];

    get_p();

    for(int i=0;i

  • 30

    Min {ai}i=1 n

    Max {ai}i=1 n

    Tm Min Max

    Tm Min (hoc Max) ca mt dy s l bi ton kinh in trong c s lp trnh.

    Khi gii thiu v k thut lp trnh v ngn ng lp trnh bao gi ngi ta cng

    phi xt bi ton tm hoc

    Vic tm cc tr ch thc hin mt ln trn i tng cho.

    Trong cc bi ton Olympic v bi ton thc t vn thng gp l tm cc tr

    trong khong con cc phn t lin tip t i n i+m hoc tm gi tr ln hn

    (nh hn) tip theo v vic tm kim ny cn thc hin nhiu ln. Cc quy lut

    ca trit hc th hin rt trc gic trong tin hc. Mt trong nhng quy lut l

    Khi s lng thay i n mt mc no th s dn n nhng thay i v

    cht lng. Chnh v vy khi chng ta c my tnh mnh hn, c h thng hon

    thin hn, c cng c lp trnh cho php khai thc ti a kh nng ca h thng

    th ngi ta i hi chng ta phi gii quyt nhng bi ton c kch thc ln

    hn v nhng iu ny buc chng ta phi c cch tip cn khc trong mi vn

    , k c xc nh v gii quyt cc vn c s.

    gii quyt vn ny ngi ta t chc mt hng i u tin q lu tr cc

    phn t tim nng. C nhiu cch khai bo q. Cch tit kim b nh nht l

    dng hng i vng trn kch thc m. Cch n gin nht v ph hp vi mi

    loi ngn ng l khai bo mng mt chiu t 0 ti n.

    Xt A = (a1, a2, . . ., an) vi 0 ai 109, 1 m n 106. Yu cu xc nh B

    = (b1, b2, . . ., bn), trong

    Cn gi thiu cc gii thut phc tp O(n2) trc khi chuyn sang gii thut

    ti u nh sau:

    Khai bo:

    Var q:array[0..1000000]of longint; hoc int q[1000001];

    bi =

    min {aj} ,j=1 i

    vi i

  • 31

    Hnh 20

    Chun b:

    a[0]:=-1; a[0]=-1;

    q[0]:=0; q[0]=0;

    ie:=0;ib:=1; ie=0;ib=1;

    X l: Vi i = 1 n:

    Chng no a[qie]a[i] dec(ie),

    inc(ie); qie:=i;

    if ie

  • 32

    Hnh 21

    Kt qu: a ra file vn bn OIL.OUT mt s thc vi 4 ch s sau du chm

    thp phn gi trung bnh mt tn du m nh my mua.

    V d:

    OIL.INP OIL.OUT

    10 5 3

    3 1 2 3 4 5 2 4 1 3

    1.7000

    Program OIL_P;

    Uses SysUtils,DateUtils;

    const tfi='OIL.IN1';

    tfo='OIL.OU1';

    Var n,m,k,i,ie,ib:longint;

    b,c,q:array[0..1000000] of longint;

    fi,fo:text;

    v:real;

    x1,x2,x3,x4,x5,ss1,ss2,mm1,mm2:word;

    BEGIN

    DecodeDateTime(Now,x1,x2,x3,x4,x5,ss1,mm1);

    assign(fi,tfi); reset(fi);

    readln(fi,n,m,k);

    for i:=1 to n do read(fi,c[i]);

    close(fi);

    c[0]:=-1; q[0]:=0;ie:=0; ib:=1;

    for i:=1 to n do

    begin

    while c[q[ie]]>=c[i] do dec(ie);

    inc(ie);q[ie]:=i;

    if ie

  • 33

    Hnh 22

    Thc hin:

    N = 999999 M = 100 K = 29 Time: 0.199 sec. Thi gian x l: 0.140 sec.

    #include

    #include

    #include

    using namespace std;

    ifstream fi ("OIL.INP");

    ofstream fo ("OIL.OUP");

    float v;

    int n, m, k, ie, ib;

    int c[1000001],q[1000001],b[1000001];

    int main()

    {clock_t aa=clock();

    fi>>n>>m>>k;

    //int c[n+1], q[n+1],b[n+1];

    for(int i=1;i>c[i];

    c[0]=-1; q[0]=0;ie=0;ib=1;

    for(int i=1;i=c[i])--ie;

    q[++ie]=i;

    if(ie

  • 34

    Nhn xt:

    bi ton trn m khng tham gia tnh ton!

    Thay v lu tr min, ta c th lu tr ch s, ni t min,

    C cch t chc tnh ton vi t b nh cn khai bo. Nhng iu ny s

    lm chng trnh tr nn phc tp hn v tn nhiu thi gian lp trnh.

    kho st v nh gi, cc chng trnh di y u c a thm mt

    thng tin ph ra file output.

    C th tn dng cc cng c t chc d liu do h thng lp trnh cung

    cp,

    Vic khai thc hp l cc cng c ny s lm chng trnh sng sa, d

    hiu v d lp trnh hn,

    Vi cc cc bi ton nh, n gin vic s dng thun ty cc cng c t

    chc d liu do h thng lp trnh cung cp s dn n vic tng thi gian

    thc hin (do phi phc v cc php x l vi cu trc),

    lp trnh hiu qu nn thc hin qua 2 bc:

    Bc 1: Xy dng chng trnh hot ng ng da trn cc cng

    c ca h thng lp trnh,

    Bc 2: Ci tin chng trnh nhn c bng cch thay mt s

    php x l chun vi cu trc d liu bng cc php truy nhp trc

    tip hiu qu hn.

    Di y l v d v chng trnh gii quyt bi ton trn,thun ty ch s dng

    cc cng c phc v x l hng i hai u.

  • 35

    Hnh 23

    #include

    #include

    #include

    #include

    using namespace std;

    ifstream fi ("OIL.INP");

    ofstream fo ("OIL.OUT");

    float v;

    int n, m, k;

    int c[1000001],b[1000001];

    dequeq;

    int main()

    {clock_t aa=clock();

    fi>>n>>m>>k;

    for(int i=1;i>c[i];

    clock_t cc=clock();

    for(int i=1;i=c[i])q.pop_back();

    q.push_back(i);

    if(q.back()-q.front()>=k)q.pop_front();

    b[i]=q.front();

    }

    v=0;

    for(int i=1;i

  • 36

    T chc v qun l interval, segment

    Cc vn ny c c trnh by rt chi tit trong bi ging ca thy

    L Minh Hong nm 2011, v vy y ta khng nhc li c s l thuyt v s

    tnh ton. Ch cn lu rng y l cc gii thut ht sc hiu qu gii

    quyt nhiu bi ton thng gp v l mt thnh phn quan trng trong c s

    gii thut m ta phi trang b cho hc sinh.

    Kiu d liu cp (pair)

    D liu kiu cp l mt loi d liu c cu trc dng lu tr gi tr v thuc

    tnh nh mt n v d liu thun tin x l.

    Mt c s d liu n gin c th xy dng t cc d liu loi cp.

    Ngn ng lp trnh C++ cung cp kiu pair lu tr v x l d liu cp.

    Vi kiu d liu ny ta c th t chc cc d liu cp n, mng d liu cp v

    mng d liu nhiu tng cp. L kiu d liu ca mt ngn ng hng i

    tng, d liu kiu pair c nhn c s phc v ca mi php x l nh

    cc loi d liu khc.

    Khai bo:

    Truy nhp:

    pair a, b[100];

    Kiu d liu th I

    Kiu d liu th II

    Hnh 24

    a

    a.first

    a.second

    b

    a

    .

    a

    .

    a

    .

    a . . .

    0 1

    0

    2 3

    0

    4 5

    0

    b[3].first

    b[3].second

    Hnh 25

  • 37

    V d: Xt bi ton:

    Lng tr em khuyt tt SOS c m hc sinh. Lng thng nhn c s quan

    tm, ti tr ca cc t chc, c nhn trong v ngoi nc. Trung thu nm nay,

    trong s cc qu khc nhau gi ti c n hp ko. Trong danh sch ghi nhn, cc

    hp c nh s t 1 n n, hp th i c ai vin ko. Cc thy c mun ly

    mt hoc mt s hp lin tc nhau trong danh sch. iu quan trng l tt c

    ko trong cc hp ly ra u phi

    chia ht cho cc em v s vin ko

    mi em phi nhn c l nh

    nhau.

    Hy xc nh xem cc thy c c

    bao nhiu cch khc nhau chn cc

    hp ko. Hai cch chn gi l khc

    nhau nu khc nhau im u hoc

    im cui hay c hai. V d, vi m

    = 10, n = 4 v s ko trong cc hp

    ln lt l 15, 50, 225, 60 ta c 4

    cch chn (Xem hnh 25).

    Trong s cc cch chn cc thy c s chn cch m nhiu hp nht v qu trnh

    m hp cng mang li cho cc em hc sinh s thch th v hi hp, thm ch

    cn ln hn c vic c bao nhiu ko s c nhn.

    D liu: Vo t file vn bn CANDY.INP:

    Dng u tin cha 2 s nguyn m v n (1 m 1000, 1 n 106),

    Dng th 2 cha n s nguyn a1, a2, . . ., an (1 ai 109, i = 1 n).

    Cc s trn mt dng cch nhau mt du cch.

    Kt qu: a ra file vn bn CANDY.OUT

    Dng th nht cha mt s nguyn s cch chn khc nhau. Nu khng

    tn ti cch chn th kt qu s l 0.

    Nu c cch chn th dng th 2 cha 2 s nguyn: s ca hp u v s

    ca hp cui trong dy hp c chn.

    V d:

    APPLES.INP APPLES.OUT

    10 4

    15 50 225 60

    4

    1 4

    Hnh 26

  • 38

    Phn tch gii thut:

    Mi bi ton lin quan ti on lin tc ca mt i tng no (dy s, xu, .

    . .) u i hi phi xy dng hm tch ly f(i) t u n v tr th i ca i

    tng. Tnh cht f(i) ph thuc vo bn cht ca vn phi xc nh.

    Bi ton trn lin quan ti vn chia ht v vy ta cn tnh

    f(i) )(1

    i

    j

    ji af mod m.

    Vi nh ngha fi nh trn ta c th tnh n theo s lp:

    f0 = 0, fi = (fi-1 +ai) mod m, i = 1 n

    Trong bi ton ny cc gi tr ai s khng tham gia vo cc x l tip theo do

    khng cn lu tr. Nh vy y khng n thun nhp d liu m l ghi nhn

    d liu, tc l tnh v lu cc thuc tnh tng ng vi d liu thay v cho vic

    lu d liu.

    Cc yu cu lin quan ti xc nh cu hnh c th i hi phi lu tr fi vi cc

    thng tin cu hnh lin quan thnh mt cm d liu (Bng quan h). Vi cc

    ngn ng khng hng i tng (nh PASCAL) mi quan h c xc nh

    thng qua gii thut, ngay c khi lu tr chng di dng Record. V vy, vi

    cc ngn ng ny cc gi tr thuc tnh nn lu di dng c lp bng cc cu

    trc n gin, nh vy s hiu qu hn trong x l.

    Vi cc ngn ng hng i tng ( nh C++), fi v cc thuc tnh ca n lu

    thnh mt i tng v ta c th khai thc mi dch v vi i tng to ra.

    Trong bi ton ny, i tng cn xt l cp (fi, i).

    Ta phi tm 2 cp (fu, u) v (fv, v) tha mn:

    fu = fv, 1 u v n,

    Max {i j }1 i n

    fi = fj

  • 39

    Hnh 27

    #include

    #include

    using namespace std;

    int n,m,r,u,v,t,ux,vx,tx,d[1000];

    pairb[1000002];

    ifstream fi ("Candy.inp");

    ofstream fo ("Candy.oup");

    int main()

    {clock_t aa=clock();

    fi>>m>>n;

    b[0].first=0; b[0].second=0;

    memset(d,0,sizeof(d)); d[0]=1;

    for(int i=1;i>t;

    b[i].first=(b[i-1].first+t)%m;

    b[i].second=i;

    d[b[i].first]++;

    }

    clock_t cc=clock();

    b[n+1].first=m; b[n+1].second=n+1;

    r=0;

    for(int i=0;i

  • 40

    Program Candy;

    Uses SysUtils,DateUtils;

    Const tfi='Candy.in1';

    tfo='Candy.out';

    Var m,n,v,u,r,t,tx,ux,vx,i:longint;

    a,b:array[0..1000001] of longint;

    d:array[0..1000] of longint;

    fi,fo:text;

    x1,x2,x3,x4,x5,ss1,ss2,ss3,mm1,mm2,mm3:word;

    Procedure QSort(left : longint; right : longint);

    Var pivot,pv_b, l_ptr, r_ptr : longint;

    Begin

    l_ptr := left;

    r_ptr := right;

    pivot := a[left];

    pv_b := b[left];

    While (left < right) do

    Begin

    While (((a[right] > pivot) OR ((a[right] = pivot )AND

    (b[right] > pv_b)))

    AND (left < right)) do

    right := right - 1;

    If (left right) then

    Begin

    a[left] := a[right];

    b[left] := b[right];

    left := left + 1;

    End;

    While (((a[left] < pivot) OR ((a[left] = pivot )AND

    (b[left] < pv_b)))

    AND (left < right)) do

    left := left + 1;

    If (left right) then

    Begin

    a[right] := a[left];

    b[right] := b[left];

    right := right - 1;

    End;

    End;

    a[left] := pivot; b[left] :=pv_b;

    pivot := left;

    left := l_ptr;

    right := r_ptr;

    If (left < pivot) then

    QSort(left, pivot-1);

    If (right > pivot) then

    QSort(pivot+1, right);

    End;

    BEGIN

  • 41

    DecodeDateTime(Now,x1,x2,x3,x4,x5,ss1,mm1);

    assign(fi,tfi); reset(fi);

    readln(fi,m,n);

    a[0]:=0;b[0]:=0;

    fillchar(d,sizeof(d),0); d[0]:=1;

    for i:=1 to n do

    begin

    read(fi,t);

    a[i]:=(a[i-1]+t) mod m;

    b[i]:=i;

    inc(d[a[i]])

    end;

    close(fi);

    DecodeDateTime(Now,x1,x2,x3,x4,x5,ss3,mm3);

    a[n+1]:=m;b[n+1]:=n+1;

    r:=0;

    for i:=0 to m-1 do r:=r+d[i]*(d[i]-1) div 2;

    qsort(0,n+1);

    tx:=0; u:=-1;

    for i:=0 to n do

    begin

    if (u=0) and (a[i]a[i+1]) then

    begin

    v:=i; t:=b[v]-b[u];

    if t>tx then begin ux:=u; vx:=v; tx:=t end;

    u:=-1

    end

    end;

    assign(fo,tfo);rewrite(fo);

    writeln(fo,r);

    if r>0 then writeln(fo,b[ux]+1,' ',b[vx]);

    DecodeDateTime(Now,x1,x2,x3,x4,x5,ss2,mm2);

    writeln(fo,'M = ',m,' N = ',n);

    u:=ss2-ss3; v:=mm2;v:=v-mm3; if v

  • 42

    Nhn xt:

    Thi gian x l vi i tng trong C++ khng nh hng nhiu n tc

    x l (vi n = 106, vic sp xp, tm kim trong C++ cn 0.281 giy,

    vi s x l i tng n tng t trong PASCAL cn 0.234 giy),

    Khi sp xp phi m bo th t b phn ca (fi, i), cc chng trnh sp

    xp ca C++ m bo yu cu ny i d liu kiu pair,

    Yu cu th nht (tnh s lng cch chn) c th ghp ngay vo qu

    trnh ghi nhn d liu v mang li hiu qu cao hn khi m ln:

    Do hn ch v khun kh ti liu, y ta khng xem xt cc gii thut

    n gin nhng c phc tp cao hn, tuy vy hc sinh cn phi c

    lm quen vi cc gii thut ny (nhng khng nht thit phi lp trnh)

    trc khi i su vo gii thut ti u,

    Gii thut nu trn c phc tp O(nlogn) do i hi phi sp xp.

    Cc gii thut c s quen thuc ngy nay cng c t chc trin khai mt cch

    c hiu qu hn trn nn ca cc h thng lp trnh hin c. Nh cch nhn ca

    th gii i vi phn kin thc c s cng c nhng chuyn dch nht nh.

    Chng ta cng phi lm cho hc sinh nhn thy v chuyn dch theo!

    V d, gii thut tm ng i ngn nht Dijsktra c trin khai c hiu qu

    da trn vic s dng hng i u tin (Priority Queue):

    Const int INF = 1000000000;

    int main()

    {int n;

    b[0].first=0; b[0].second=0;r=0;

    memset(d,0,sizeof(d)); d[0]=1;

    for(int i=1;i>t;

    b[i].first=(b[i-1].first+t)%m;

    b[i].second=i;

    r+= d[b[i].first]++;

    }

    Hnh 28

  • 43

    . . . c n . . .

    vector < vector < pair > > g (n);

    ... c d liu v th ...

    int s = ...; // nh xut pht

    vector d (n, INF), p (n);

    d[s] = 0;

    priority_queue < pair > q;

    q.push (make_pair (0, s));

    while (!q.empty())

    { int v = q.top().second, cur_d = -q.top().first;

    q.pop();

    if (cur_d > d[v]) continue;

    for (size_t j=0; j

  • 44

    Cesar th phi tr li cho Cesar, lp trnh vn mang trong n yu t ngh

    thut!

    Nhng yu t ngh thut l mt thnh phn khng th tch ri trong tin hc.

    C nhiu mc trong cc vn nu trn c xem xt cc t lm vic

    trc. Nhng nhng ln cc vn c xem xt c lp v kho st kh

    su. Cc vn lin quan n c s - ngn gn v n gin hn. Nhng vn

    ny tng i c lp vi yu cu hin nay ca th gii v nh hng gii

    thut v vy ta s khng i su y, trong t lm vic ny.

    Th gin v tch hp kin thc

    gim p lc tm l v ng thi khng lm hc sinh sao nhng cc mn hc

    cn li, chng ta cn chun b mt s bi tp tng i n gin vi ni dung

    ly t cc mn hc khc (vn, s , a, l,ha, sinh, . . .). Phn nn

    (background) phi c pht biu ngn gn nhng tuyt i chnh xc v kin

    thc khoa hc v nhn mnh cho hc sinh r v s chnh xc . Phn d liu

    v yu cu tnh ton l t do (v cng cn lu hc sinh v s t do ny nu c

    hc sinh khng b ln gia thc v o).

    V d:

    Bi 1. TH NG LUT

    Trong ting Vit, cc t khng du hoc c du huyn thuc thanh bng, trong

    trng hp ngc li t thuc thanh trc.

    Th ng lut c mt h thng quy tc phc tp c th hin 5 iu

    nghim khc sau: Lut, nim, vn, i v b cc. Xt mt bi th ng lut

    tht ngn bt c (8 cu, mi cu 7 t). Nu ch th 2 ca cu u tin dng

    thanh bng th gi l bi c "lut bng"; nu ch th 2 cu u dng thanh trc

    th gi l bi c "lut trc". Trong mt cu, ch th 2 v ch th 6 phi ging

    nhau v thanh iu, v ch th 4 phi khc hai ch kia. V d, nu ch th 2 v

    6 l thanh bng th ch th 4 phi dng thanh trc, hay ngc li. Nu mt cu

    th ng m khng theo quy nh ny th c gi "tht lut".

    Thng tin v bi th c cho di dng 8 au, mi au 7 k t xc nh t

    thuc thanh bng hay trc, k t - tng ng t thuc thanh bng v + nu

    t thuc thanh trc.

  • 45

    V d, thng tin v bi Qua o Ngang ca B Huyn Thanh Quan c dng nh

    sau:

    Hy lp trnh xc nh bi th thuc loi lut no hay tht lut v a ra s 1

    nu l lut bng, s 2 nu l lut trc v s 3 nu l tht lut.

    D liu: Vo t file vn bn POETRY.INP gm 8 dng, mi dng mt xu 7

    k t t tp {-, +}.

    Kt qu: a ra file vn bn POETRY.OUT mt s nguyn loi lut ac nh

    c.

    V d:

    POETRY.INP POETRY.OUT ++--++-

    +--++--

    --++--+

    ++--++-

    ++---++

    --+++--

    --++--+

    ++---+-

    2

    Bi tp v nh: Tm mt s bi th ng lut tht ngn bt c ca B Huyn Thanh Quan,

    Nguyn Khuyn, H Aun Hng, m ha v loi lut ca chng. Em c nhn xt g v cch

    lm th ca cc tc gi trn?

    Bi 2. 100 km/h

    Trn tri t bt c xe t no cng c th t tc 100 km/h sau 3 giy! Bn

    khng tin vo iu ? Vy hy y chic xe xung t mt vch dng

    ng cao.

    Hnh 29. Bi th Qua o Ngang Thng tin m ha Cnh o Ngang

  • 46

    Hy tnh cao ti thiu (theo mt) cn c ca vch sau 3 giy t t

    vn tc 100km/h v a ra mn hnh cao tnh c vi chnh xc 1 ch s

    sau du chm thp phn. Gia tc ri t do g = 9.8m/s2.

    Nu mt trng, cn bao nhiu thi gian t vn tc 100 km/h v cao ca

    vch phi l bao nhiu?

    hnh tinh c gia tc ri t do p (0 < p 100) cn bao nhiu thi gian t

    vn tc 100 km/h v cao ca vch phi l bao nhiu? D liu nhp t bn

    phm v kt qu - a ra mn hnh.

    Bi 3. DEOXYRIBONUCLEIC AXID

    Deoxyribonucleic axid (DNA) l mt trong hai loi a xit mang thng tin di truyn m ha cho hot ng sinh trng v pht trin ca cc dng sng.

    V mt ho hc, cc DNA c cu thnh t nhng vin gch, gi l nucleotide,vit tt l Nu. Do cc Nu chi khc nhau base (1Nu = 1 Desoxyribose + 1 phosphate + 1 base), nn tn gi ca Nu cng l tn ca base m n mang. Ch c 4 loi gch c bn l A, T, C, v G.

    Mi base trn 1 chui ch c th bt cp vi 1 loi base nht nh trn chui kia theo mt quy lut chung cho mi sinh vt. Theo quy lut, mt "A" chui ca phn t ADN si kp s ch lin kt ng vi mt "T" chui kia.(Nguyn tc b sung). Mi chui xc nh theo mt hng v hai chui ca mt DNA lun hng ngc chiu nhau. Nh vy, i din vi Nu th nht ca mt chui l Nu cui cng ca chui kia, i din vi Nu th 2 ca chui th nht l Nu st cui ca chui th hai,

    . . . V d, nu chui th nht l AGC th chui

    th 2 s l GCT.

    Ton b DNA ca Steve c mt phng th nghim tuyt mt ghi li, nhng Steve ch nhn c bn in ca mt trong s 2 chui di dng au S. T ti liu chuyn mn, Steve bit

    c gen siu nhn l t. DNA ca ai cha t

    nh mt xu con (cc k t lin tip nhau) s l mt siu nhn! Tt nhin, Steve mun bit c cha gen siu nhn hay khng. Lu l gen siu nhn c th nm chui m Steve khng

    Hnh 30

  • 47

    nhn c.

    Yu cu: Cho S xu DNA di khng qu 200 k t v xu gen t di

    khng qu 20 k t. Hy xc nh xem Steve c gen siu nhn hay khng v

    a ra cu tr li di dng Yes hoc No.

    D liu: Vo t file vn bn DNA.INP, dng th nht cha xu S, dng th 2

    cha xu t.

    Kt qu: a ra file vn bn DNA.OUT cu tr li Yes hoc No.

    V d:

    DNA.INP DNA.OUT ATGCATGC

    TGC

    Yes

    Yu cu m rng: Gii thut thay i nh th no nu cc xu S v t c di

    khng vt qu 106? Hy lp trnh cho trng hp m rng.

    CNG C LP TRNH

    Trang b kin thc v ngn ng lp trnh cha bao gi l mt vn ln trong

    tin hc. iu quan trng l k thut lp trnh v t chc d liu. Khi bit

    tng i tt mt ngn ng lp trnh th vic chuyn sang lp trnh mt ngn

    ng mi kh n gin.

    Bn cnh ngn ng truyn thng PASCAL vi h thng lp trnh Free Pascal v

    C++ vi h thng lp trnh DEV C++, nhiu nc cn cho php v khuyn

    khch s dng mt lot cc ngn ng khc nh Delphi, Python, Java, C#, . . .

    ng nhin, khi chn mt ngn ng no lm cng c cho mnh ngi lp

    trnh cn phi:

    Bit r nhng im mnh v yu ca ngn ng cng nh ca h thng h

    thng lp trnh h tr,

    Cn nm vng cc dch v m h thng lp trnh cung cp,

    Cn c thi quen suy ngh v hnh ng ph hp vi ngn ng v h

    thng lp trnh,

    Cn bit cng su cng tt cc th vin chun h tr lp trnh v bit

    khai thc chng mt cch ti u.

  • 48

    Nu c cch tip cn hp l th nhng vn trn c th gii quyt c mt

    cch kh n gin v hiu qu.

    nc ta, trong bc PTTH h thng lp trnh c s dng ph bin l ngn

    ng PASCAL vi h thng lp trnh Free Pascal. bc i hc, ngn ng lp

    trnh ch yu l C/C++ vi h thng Dev C++.

    Trn th gii nhiu nc s dng C++ vi cc h thng lp trnh Dev C++ hoc

    tng ngngay t bc ph thng trung hc.

    Vic ging dy i tr trong nh trng khng phi l vn tho lun y.

    Nhng vic trang b cng c cho hc sinh nng khiu, phc v cho cc k thi

    Tin hc l vn nm trong tm xem xt v x l ca chng ta.

    Cng cn lu l trong mt tng lai gn ta s phi xem xt n cc kha cnh

    ca vic t chc x l song song.

    Cc bi ton tham kho

    Di y l mt s bi ton thi quc gia hoc khu vc cc nm 2011 2012

    ta hnh dung c mt bng yu cu chung ca th gii i vi hc sinh gii tin

    hc:

    Bi 1. MT KHU

    Mi ngi tham d Olympic Tin hc u phi kch hot chng trnh cung cp

    mt khu ring cho mnh truy nhp vo h thng. Khi c kch hot,

    chng trnh s a ra 2 s nguyn ( h 10). S th hai nhn c t s th

    nht bng cch thay dy khng rng cc ch s lin tip nhau bng tng ca

    chng. Mt khu chnh l dy s to thnh tng ghi vo s th 2.

    V d, 2 s m chng trnh cung cp l 2148 v 213, s th 2 nhn c t s

    th nht sau khi thay 148 bng 1+4+8 (= 13). Nu nh s cc ch s trong s

    th nht bt u t 1, t tri sang phi th mt khu c xc nh t dy cc

    ch s t 2 n 4 ca s th nht.

    Yu cu: Hy xc nh cc v tr u v cui ca dy s to nn mt khu.

    D liu: Vo t file vn bn PASSWORD.INP, dng u tin cha s th nht,

    dng tip theo cha s th hai. Cc s khng bt u bng 0 v mi s c

    khng qu 105 ch s.

  • 49

    Kt qu: a ra file vn bn PASSWORD.OUT trn mt dng 2 s nguyn xc

    nh cc v tr u v cui ca dy s to nn mt khu. Nu tn ti nhiu li

    gii th a ra li gii ty chn bt k. D liu m bo c nghim.

    V d:

    PASSWORD.INP PASSWORD.OUT

    2148

    213

    2 4

    Ghi ch: Bi d nht ca k thi Lin bang Nga 2012, gii thut ti u c

    phc tp O(n).

    Bi 2. KHM SC KHE

    t khm tuyn ngha v qun s nm nay c n ngi c gi. Tt c h u

    phi khm sc khe ln lt t phng 1 n phng m. Ti mi thi im mi

    phng c th khm c ng thi k ngi.Mi ngi, khi khm xong phng

    th i s chuyn sang xp hng khm phng i+1. Trnh t dch v mi

    phng l ai n trc th khm trc. Thi gian chuyn t phng ny sang

    phng khc v thi gian chuyn ngi khm trong mt phng l khng ng k.

    Mi ngi c mt phiu khm sc khe, nh s theo th t vo khm phng

    u. Mi phng ghi li thi gian khm dnh cho ngi c phiu.

    Vi tp phiu ghi nhn thi gian khm hy xc nh khong thi gian t lc

    ngi u tin vo khm phng 1n lc kt thc khm ngi cui cng

    phng m.

    D liu: Vo t file vn bn MEDCHECK.INP:

    Dng u tin cha 3 s nguyn n, m v k (1 n 105,1 m, k 10),

    Dng th i trong n dng sau cha m s nguyn xc nh thi gian khm

    mi phng ca ngi th i, thi gian c gi tr trong khong [1, 1000].

    Kt qu: a ra file vn bn MEDCHECK.OUT mt s nguyn khong thi

    gian tnh c.

    V d:

    MEDCHECK.INP MEDCHECK.OUT

    3 2 2

    3 5

    4 4

    5 3

    11

  • 50

    Ghi ch: Kazastan 2012, O(n).

    Bi 3. LI NHY

    C rt nhiu siu anh hng nh Batman, Ngi Nhn, Siu nhn, . . . mt trong

    s l anh chng Kickass. Bt chc Ngi Nhn anh ta t chc mt mn

    trnh din nhy t nc nh ny sang

    nc nh khc.

    Kickass chn mt dy n nh cao tng,

    nh s t 1 n n t tri qua phi v

    bt u nhy t nc nh th k. Tuy

    vy, do nng lc cn yu anh ta ch c

    th nhy sang nc nh k cnh bn

    phi hoc bn tri khng cao hn nh

    ang ng. Khng mun mi ngi

    thy mnh yu km anh ta b tr mt

    s li l xo trn mt vi nc nh. Vi s tr gip ca li l xo anh ta c th

    t nh ti nc ngi nh bt k khng ph thuc vo n u v cao th no.

    Hy xc nh s lng ti a cc nc nh m anh ta t chn n trong qu

    trnh nhy. Cc nc nh m anh ta nhy qua nhy li nhiu ln ch c tnh l

    mt. Nc nh xut pht cng c tnh k c khi khng c ln no nhy li ti

    n.

    D liu: Vo t file vn bn TRAMPO.INP:

    Dng u tin cha 2 s nguyn n v k (3 n 2105, 1 k n),

    Dng th 2 cha n s nguyn dng, mi s khng vt qu 109, xc

    nh cao cc nh trong dy, t tri qua phi,

    Dng th 3 cha xu S di n ch cha cc k t trong tp {., T}, Si =

    T cho bit trn nc nh th i c t li nhy .

    Kt qu: a ra file vn bn TRAMPO.OUT mt s nguyn s lng ti a

    cc nc nh ti.

    10 107 3 1 1 9 8 2 4

    Hnh 31

  • 51

    V d:

    TRAMPO.INP TRAMPO.OUT

    10 1

    10 7 3 1 1 9 8 2 4

    10

    ..T..T....

    7

    Ghi ch: Croatia 2012, O(n).

    Bi 4. BNH RN PH THY

    V o s c vic i vo thnh ph v dn ch b gip vic lm bnh rn ti

    n. o s rt thch bnh rn v mi ti n khng t hn mi chic. Ch b

    gip vic khoan khoi thy thy i vng. Ngh ti lm bnh rn ch hi ngi,

    nhng cht nh ra cu thn ch nghe lm c v h to n. Lp tc dng

    trong bp nhy ln, t thao tc v cho ra l ht chic bnh rn ny n chic

    khc. Ch khoi ch h ln Thi, ri, dng li! nhng cc thit b vn tip

    tc hot ng. Chic bn sp sp di sc nng ca ng bnh rn. Cung qu

    ch qun mt cu thn ch dng vic, ch nh rng n c ghi trn chic vng

    eo tay ca o s. Mt vng c ph li vung, trn mi c ghi

    mt ch ci, t mi c th i sang 8 k cnh hoc nh (xem hnh v). T

    mt ta c th i sang k. Cc ch ci trn nhng k i qua to thnh

    mt xu k t. Cu thn ch cn tm l xu di nht (c di ln hn 1) xut

    hin trn vng t nht 2 ln, ngoi ra tha mn cc iu kin:

    Mi xu khng cha cc lp li ( i qua),

    Hai xu phi bt u t 2 khc nhau hoc cng mt nhng theo hng

    i khc nhau.

    Hnh 32

  • 52

    Theo nh ngha trn, xu palindrome d nhin l xut hin t nht 2 ln.

    Hy xc nh cu thn ch cn tm.

    D liu: Vo t file vn bn DONUT.INP gm nhiu tests, mi test cho trn

    mt nhm dng, dng u tin cha 2 s nguyn h v w ( 3 h 10, 3 w

    20), trong h v w s trn cc vng trn con v vng trn ln, tip theo l h

    dng, mi dng cha xu gm cc ch ci la tinh in hoa di w xc nh

    cackys t ghi trn mt vng trn ln, cc xu u bt u t ca mt vng

    trn con.

    D liu kt thc bng dng cha 2 s 0.

    Kt qu: a ra file vn bn DONUT.OUT cu thn ch tm c, kt qu mi

    test trn mt dng. Nu c nhiu xu cng tha mn th a ra xu c th t

    t in nh nht. Nu khng tn ti xu tha mn th a ra mt s 0.

    V d:

    DONUT.INP

    5 7

    RRCABXT

    AABMFAB

    RROMJAC

    APTADAB

    YABADAO

    3 13

    ABCDEFGHIJKLM

    XMADAMIMADAMY

    ACEGIKMOQSUWY

    3 4

    DEFG

    ACAB

    HIJK

    3 6

    ABCDEF

    GHIAKL

    MNOPQR

    10 19

    JFZODYDXMZZPEYTRNCW

    XVGHPOKEYNZTQFZJKOD

    EYEHHQKHFZOVNRGOOLP

    QFZOIHRQMGHPNISHXOC

    DRGILJHSQEHHQLYTILL

    NCSHQMKHTZZIHRPAUJA

    NCCTINCLAUTFJHSZBVK

    LPBAUJIUMBVQYKHTZCW

    XMYHBVKUGNCWTLLAUID

    EYNDCCWLEOODXYUMBVN

    0 0

  • 53

    DONUT.OUT

    ABRACADABRA

    MADAMIMADAM

    ABAC

    0

    ABCDEFGHIJKLMNOPQRSTUVWXYZHHHHHABCDEFGHIJKLMNOPQRSTUVWX

    YZ

    Ghi ch: Bi A, Fukuoka, Nht 2011.

    Bi 5. PHN TCH FIBONACCI

    Fibonacci l dy s f0 =0, f1 =1, f2 = 1, f3 = 2, . . ., fn = fn-1 + fn-2 vi n >2.

    Cc s u tin ca dy s Fibonacci l 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, . . .

    Steve kho st vic phn tch mt s nguyn thnh tng, hiu cc s Fibonacci.

    Hin ti Steve tm hiu vic biu din mt s nguyn di dng tng/hiu mt

    s t nht cc s Fibonacci (khng nht thit phi khc nhau). V d, cc s 10,

    19, 17 v 1070 c th biu din vi s lng t nht l 2, 2, 3 v 4 s Fibonacci:

    Vi mi s nguyn dng trong p s cho trc hy xc nh s lng ti thiu

    cc s Fibonacci biu din s di dng tng i s (tc l bng cc php

    cng, tr).

    D liu: Vo t file vn bn ARSUM.INP:

    Dng u tin cha s nguyn p (1 p 10),

    Mi dng trong p dng sau cha s nguyn k (1 k 41017).

    Kt qu: a ra file vn bn ARSUM.OUT kt qu tm c di dng s

    nguyn, mi kt qu trn mt dng.

  • 54

    V d:

    ARSUM.INP ARSUM.OUT

    1

    1070

    4

    Ghi ch: Bi 2 vng 2 Ba Lan 2012 (Ba lan thi 4 vng).

  • 55

    CHUYN 2

    TRAO I V MT S BI TP TRONG L THUYT S

    2.1. S nguyn t.

    2.1.1. V hai hm tm s nguyn t nu trang 19 v 20 (Ti liu GKCT, Q1):

    a. Hm 1 (chn k=2) c chy chm hn hm 2 (chn k=6) hay khng?.

    Hm 1.

    function snt(a: longint): boolean;

    var i, sqrt_a: longint;

    begin

    if (a

  • 56

    chng tm tt c cc s nguyn t khng vt qu N vi N nh th thi gian

    chy khng chnh lch nhau ng k, nhng khi N ln, thi gian khc bit

    nhiu. Nguyn nhn v sao? (Tham kho cc s liu sau v thi gian chy

    chng trnh ng vi my c b nh 2G, b x l ADM Dual-Core (1,65GHz).

    1N 1000 104

    105

    106

    107

    Thi gian chy chtrnh dng hm 1

    (n v giy)

    0,005 0,015 0,203 4,695 117,75

    Thi gian chy ch trnh dng hm 2

    (n v giy)

    0,005 0,015 0,078 1,623 39,07

    S lng s nguyn t khng vt qu

    N

    168 1229 9592 78498 664579

    b. Trao i. ngha cc dng lnh sau y:

    Trong hm 2: if ((a

  • 57

    2

    2

    2

    2

    2

    (mod )

    2 1

    y

    y

    y

    x y k

    x N

    x x y k

    (mod (N) (*)

    a. Xy dng hm kim tra s nguyn t theo nh l Fecmat nh var z, p, a : longint;

    function lt(x,y,n: longint):longint;// Xy dng hm xy (mod

    N) theo cng thc (*)

    var z1 : longint;

    begin

    if y=0 then lt := 1

    else begin

    z := lt (x, y div 2, n);

    if (y mod 2 = 0) then z1 := (z*z mod n)

    else z1:= x*(z*z mod n);

    if z1>n then z1:=z1 mod n;

    lt := z1;

    end;

    end;

    function nt(p : longint): boolean;

    begin

    nt := false;

    for a:=1 to p-1 do

    if lt(a,p-1,p)1 then exit;

    if p

  • 58

    + Chy chm (do nguyn nhn no?)

    + Khi p>45000 s trn s (do nguyn nhn no?)

    Trong trng hp mun kim tra gn ng s p ln c l nguyn t hay

    khng th cho a nhn mt gi tr ngu nhin random(p-2)+2. Gi s lng test l

    ntest, gi xacsuat l xc sut ti thiu tha nhn p l nguyn t. Khi p l

    s nguyn t nu (s ln cha khng nh c p l hp s)/ntest)> xacsuat. S

    lng test l ntest cng ln th kh nng tha nhn ng p l nguyn t cng

    chnh xc hn . Xc sut ti thiu xacsuat c th iu chnh tng tng

    chnh xc.

    b. Chng trnh kim tra gn ng s nguyn t theo nh l Fecmat nh Chng trnh 1 (Kim tra s nguyn t theo xc sut

    da trn nh l Fecmat nh) tng i nhanh, chnh

    xc kh cao

    uses sysutils;

    const ntest = 30; // S lng test (c th iu chnh)

    sacxuat=0.6; // c th iu chnh

    var p, count : int64;

    start, stop : tdatetime;

    function luythua(x,y,n: int64): int64;// Xy dng xy (mod n)

    theo cng thc (*)

    var z : int64;

    begin

    if y=0 then luythua := 1

    else begin

    z := luythua(x, y div 2,n);

    z := (z*z) mod n;

    if y mod 2 = 1 then z := ((x mod n) * z) mod n;

    luythua := z;

    end;

    end;

    function nt(p : int64): boolean;

    var test,dem, a : longint;

    begin

    if p=2 then begin nt := true; exit; end;

    nt := false;

    if p

  • 59

    dem := 0;

    for test:=1 to ntest do begin

    a := random(p-2)+2;

    if luythua(a,p-1,p)1 then exit

    else inc(dem);

    end;

    if (dem/ntest>sacxuat) then nt := true else

    nt:=false;

    end;

    BEGIN

    start := now; count := 0; p:=1;

    while p

  • 60

    + Nu x=1 hoc x=n-1 (ngha l x= 1 (mod n)) th quay v du vng lp

    + Trong khi s>=0 lp (vng trong) {

    - Thay x=x2 (mod n) - Nu x = n-1 th thot vng lp trong - Gim s mt n v

    }

    + Nu s0) do begin

    if (y mod 2 =1) then z := (z*x) mod n;

    y := y div 2;

    x := (x*x) mod n;

    end;

    exit(z);

    end;

    function prime(n : int64): boolean;

  • 61

    var dem, r, a, x : int64; k: longint;

    begin

    if n=2 then exit(true);

    if (n=0 do begin

    x:= luythua(x,2,n);

    if x=n-1 then break;

    dec(s);

    end;

    if s

  • 62

    trnh tip tc nh th vi cc bi ca i khi m i2N. Cc s nguyn cn li cha

    b xo s l s nguyn t.

    Chng trnh 3 (Thun li khi cn mi s nguyn t

    khng vt qu N)

    uses sysutils;

    const fo ='';

    maxnum = 10000 ;

    var n, count : int64;

    test : longint;

    g : text;

    x : array [2..maxnum] of boolean;

    start, stop : tdatetime;

    procedure tao_x;

    var i, j, canN : int64;

    begin

    i:=2;

    while (i

  • 63

    tao_x;

    assign(g, fo); rewrite(g);

    n := 2; count := 0;

    while n

  • 64

    Const max = 34;

    H : String =

    '0123456789ABCDEFGHIKLMNOPQRSTUVXYZ';

    Var c1,c2,so : Longint;

    n : String;

    function Cosomin(S:String):Byte;

    var i : Byte; ch : Char;

    begin

    ch := '0';

    for i:=1 to length(s) do

    if s[i]>ch then ch := s[i];

    cosomin:= pos(ch,H);

    end;

    procedure nhap;

    var i : byte;

    begin

    repeat

    write('Cho biet co so thu nhat ');

    {$i-} readln(c1); {$i+}

    until (Ioresult=0) and (c1>=1) and (c1=cosomin(n)) and

    (c11) and (c2

  • 65

    p:= p*c1+ Pos(s[i],h)-1;

    doiC1_10:=p;

    end;

    function doi10_C2(n:Longint):String;

    var p : String;

    i : Byte;

    begin

    p:='';

    while (n>0) do begin

    p := H[n mod c2+1]+p;

    n := n div c2;

    end;

    doi10_C2:=p;

    end;

    BEGIN

    repeat

    clrscr;

    nhap;

    so := DoiC1_10(n);

    writeln(N,'[cs ',c1,']=',Doi10_C2(so),'[cs

    ',c2,']');

    write(#10#13,'ESC : Thoat . Phim khac : tiep tuc

    ');

    until Readkey=#27;

    END.

    2.1.7. Bi tp 1. Kim tra s nguyn t vi tc cao

    Tm s nguyn t gn nht nh hn N (3 N 230). D liu vo: Dng u tin

    cha s nguyn T l s lng test. (T 10000). T dng tip theo, mi dng cha

    mt s nguyn N. Kt qu: Vi mi test, in kt qu trn mt dng. Hn ch thi

    gian: 5 giy. V d:

    D liu:

    3

    5

    10

    17

    Kt qu:

    3

  • 66

    7

    13

    d kin cch gii bi tp trn, chng ta c th tham kho kt qu chy

    cc chng trnh tm cc s nguyn t khng vt qu N. Hy phc tho cc d

    kin gii bi tp ny sao cho bo m hn ch thi gian nu trong . Bn chn

    d kin no trong cc d kin sau y:

    A. To sng Eratosthenes, lu vo mt mng cc s nguyn t t 2 n 232

    , sau c tp input, vi mi s N tm c, tm trn mng lu tm s

    nguyn t nh hn v gn N nht

    B. c input, mi ln c mt s N, dng hm 1 hoc 2 kim tra pht

    hin s nguyn t nh hn v gn N nht.

    C. c input, mi ln c mt s N, dng chng trnh 1 kim tra pht

    hin s nguyn t nh hn v gn N nht.

    D. D kin khc.

    Hy phn tch tng d kin c kh nng thc hin c hay khng?

    2.2. c chung ln nht.

    2.2.1. Thut ton Euclid

    B . Nu a=bq+r (a, b 0, q v r l cc s nguyn) th: UCLN(a,

    b)=UCLN(b, r).

    Thut ton Euclid tm c chung ln nht. Lp thc hin b trn cho

    n khi b=0.

    Chng trnh 6 (Tm UCLN theo nh ngha)

    uses crt;

    var x, y : longint;

    function gcd(a,b : longint): longint;

    var r : longint;

    begin

    if a

  • 67

    begin

    write('nhap hai so x va y : '); readln(x,y);

    write('UCLN (',x,',',y,') = ',gcd(x,y));

    readln;

    end.

    2.2.2. Thut ton Euclid m rng

    nh l. Nu d=UCLN(a, b) th tn ti cp s nguyn x v y sao cho d=ax+by.

    Thut ton Euclit m rng th hin qua th tc sau (gi m) tr v d, x v y:

    Extended_Euclid(a,b) {

    Nu b=0 th tr v (d=a, x=1, y=0). Dng

    Gi qui Extended_Euclid(b, a mod b) tr v (d, x, y);

    Gn (d, x, y) (d, y, x-a

    b

    y)

    Tr v (d, x, y);

    }

    Th tc (thut ton Euclid m rng)

    procedure ext_Euclid(a: longint;b: longint; var d:

    longint;

    var x,y: longint);

    var d1,x1,y1 : longint;

    begin

    if b=0 then begin

    d := a; x := 1; y := 0;

    end

    else begin

    ext_Euclid(b, a mod b, d1, x1, y1);

    d := d1;

    x := y1;

    y:= x1-(a div b)*y1;

    end;

    end;

    2.2.3. Hm -le

    Hm -le cho s lng cc s nguyn t 1 n n nguyn t cng nhau vi

    n. Ni cch khc l s lng cc s nguyn trong on [1;n] c UCLN vi n

    bng 1.

    Mt vi gi tr ban u: (1) =1, (2) =1, (3) =2, (4) =2, (5) =4,

  • 68

    Ba tnh cht n gin ca hm -le sau y cho php tnh c gi tr ca hm.

    ( )p =p-1 vi p l s nguyn t

    ( )ap = 1a ap p vi p l s nguyn t v a l s nguyn.

    ( . ) ( ). ( )a b a b

    T xy dng c cch tnh hm -le ( )n nh sau:

    Phn tch n thnh dng tch cc tha s nguyn t. 1 21 2. ... .

    kaa a

    kn p p p (pi

    nguyn t, i=1, 2,..k)

    1 21 2( ) ( ). ( )... ( )

    kaa a

    kn p p p = 1 1 2 2 11 11 1 2 2. ... .k ka aa a a a k kp p p p p p

    Do 1 2

    1 1 1( ) 1 . 1 ... 1

    k

    n np p p

    Chng trnh tnh Hm le

    uses crt;

    var n, i : longint;

    function ole(n : longint): longint;

    var result, i : longint;

    begin

    result := n;

    i := 2;

    while (i*i1 then result := result-(result div i);

    ole := result;

    end;

    BEGIN

    write('Nhap n: '); readln(n);

    write(ole(n));

    readln;

    END.

    Tnh cht quan trng nht ca hm -le th hin qua nh l -le:

    nh l -le. ( ) 1ma (mod m) vi a v m nguyn t cng nhau.

    V mt trng hp c bit ca nh l l nh l Fecma nh (nu trn): 1 1pa (mod p).

  • 69

    2.2.4. Mt s khi nim v ng d

    Php ton ng d. D ca php chia s nguyn cho N c N gi tr l 0,

    1, 2, , N-1. Hai s nguyn x v y c cng mt s d khi chia cho N c gi

    l hai s nguyn ng d, k hiu: x y (mod N).

    Hai s nguyn x v y c gi l ng d theo mun N nu (x-y) chia ht

    cho N.

    Cc s nguyn c cng s d khi chia cho N to thnh mt lp ng d.

    Tp hp cc lp ng d theo N k hiu l Zn. V d c 3 lp ng d theo

    mun N=3 l:

    -9, -6, -3, 0, 3, 6, 9,

    -8, -5, -2, 1, 4, 7, 10,

    -7, -4, -1, 2, 5, 8, 11,

    Mt s tnh cht

    'x x (mod N) v 'y y (mod N) th ' 'x y x y (mod N) v ' 'xy x y

    (mod N)

    ( ) ( )x y z x y z x y z (mod N)

    xy yx (mod N)

    ( )x y z xy xz (mod N)

    S i ca x theo mun N l N-x

    S nghich o ca x theo mun N l s y sao cho x.y 1 (mod N).

    nh l c bn ca ng d: x, y, nN , n0 v k hiu l mt trong 3

    php ton: +, -, * th: (xy) mod n = ((x mod n) (y mod n)) mod n.

    H qu. xy mod n = (x mod n)

    y mod n (p dng khi x>n).

    2.2.5. Gii phng trnh ng d tuyn tnh (i--phng): ax b (mod n).

    Cho phng trnh ax b (mod n), vi a, b, n l cc s t nhin, n>0. Cch

    gii l:

    a) Tm d l UCLN (a,n).

    b) Nu d khng l c ca b th phng trnh v nghim.

    c) Nu b = kd th phng trnh c ng d nghim trong tp Zn. Gi s x l

    mt nghim ty (c th chn bng b. a sai khc mt s ln nguyn n/d, vi a

    l nghich o ca a theo mod n), th d nghim ca phng trnh c dng n

    x id

    (mod n). , i = 0, 1, 2, ..., (d-1).

    V d. Gii phng trnh ng d 14x 30 (mod 100).

  • 70

    Ta c a=14; b = 30; n = 100;

    d l UCLN ca a v n nn d=(14, 100)=2, d l c ca b v 30 chia ht cho

    2, nn phng trnh c 2 nghim trong Zn. Hai nghim ny l x1=-105 v

    x2=x1+100/2=x1+50=-55.

    Chng trnh 7 (Gii phng trnh i--phng)

    uses crt;

    var a, b, n, d, x, y : longint;

    procedure extended_euclit (a, b : longint; var d, x,

    y : longint);

    var d1, x1, y1 : longint;

    begin

    if (b=0) then begin

    d := a; x := 1; y := 0;

    end else begin

    extended_euclit(b, a mod b, d1, x1, y1);

    d := d1;

    x := y1;

    y := x1 - (a div b)*y1;

    end;

    end;

    procedure solution(a,b,n : longint);

    var i : longint;

    begin

    extended_euclit(a,n,d,x,y);

    if (b mod d=0) then begin

    x := x*(b div d);

    if x0) do x := x - n div d;

    if x

  • 71

    Writeln('Giai phuong trinh Di o phang ax=b (mod n)

    :');

    write('Nhap a, b, n: '); readln(a, b, n);

    solution(a, b, n);

    readln;

    END.

    Trao i. Thut ton gii phng trnh ng d c thc hin bi chng

    trnh 7.

    2.2.6. Bi tp 2. Hn Tn im qun

    Tc truyn rng ngy xa Hn Tn danh tng ca Lu Bang (Hn Cao

    T) im binh cho lnh xp hng ba, hng nm, hng by ri ghi cc s l tng

    ng s suy ra s lnh bng cch sau y: Nhn s l hng ba vi 70, s l hng

    nm vi 21, nhn s l hng by vi 15. Cng cc kt qu y li ri thm mt

    bi s thch hp ca 105 s c s lnh. Nu k hiu s lnh l S, s l xp

    hng 3, hng 5, hng 7 tng ng l a, b, c th S = (70.a + 21.b + 15.c) + 105.k

    (k l s nguyn chn thch hp S ph hp l s lnh ca mt i i, mt tiu

    on hay trung on... ).

    y cng l bi ton xut bi nh ton hc Trung quc Sun-Tsu.

    C s ton hc ca cch im binh nu trn l nh l sau:

    nh l. Cho m1, m2, , mn l cc s nguyn i mt nguyn t cng

    nhau. H phng trnh:

    (I)

    1 1

    2 2

    mod

    mod

    ...

    modn n

    x a m

    x a m

    x a m

    C mt nghim duy nht l x 1

    n

    i i i

    i

    a M y

    (mod m)

    vi m= m1.m2mn v Mi=i

    m

    m , yi l nghch o ca Mi theo mun mi:

    yi.Mi1 (mod mi)

    V d. Tm nghim ca h phng trnh ng d sau:

    2 mod3

    3 mod5

    2 mod 7

    x

    x

    x

    vi x[300; 400]

    m=357, M1=35, M2=21, M3=15,

  • 72

    y1=2 v 3521(mod 3), y2=1 v 211 1(mod 5), y3=1 v 151 1(mod 7).

    Vy nghim ca h theo mun m=105 l :

    x= 2352 + 3211 + 2151 = 233 23 (mod 105).

    x[300; 400] nn x=338

    Yu cu. Hy vit chng trnh nhp vo cc s a1, a2, ..., an, m1, m2, ...,

    mn, c , d v gii h (I) trn tp [c; d].

    Input. Dng u l s N (s phng trnh thuc h)

    N dng tip theo ln lt l N s ai

    N dng tip theo ln lt l N s mi

    Dng cui cng l hai s c v d.

    Output. Hin trn mn hnh nghim duy nht ca h (nu c) hoc thng

    bo vo nghiem trong trng hp v nghim.

    Trao i.

    1. Cch tm s nghch o ca s a theo mun n?

    2. V sao h (I) c nghim duy nht l: x 1

    n

    i i i

    i

    a M y

    (mod m)?

    2.3. S nguyn ln

    2.3.1. Xy dng cc php ton cng, tr v nhn

    Bi ton. Dng mng mt chiu, xy dng cc hm cng, tr, nhn hai s

    nguyn c hng nghn ch s.

    Chng trnh 8 (Cng, tr, nhn hai s nguyn ln)

    const fi = 'bignum.in';

    fo = 'bignum.out';

    type arr = array[1..2000] of byte;

    bignum = record

    v : arr; // Mng cha cc ch s ca s

    l : integer; // di ca s

    end;

    var a, b, c : bignum;

    f, g : text;

    function daomang(x : bignum): bignum;// o ngc biu din

    s hng n v v tri nht

    var i, j, t : integer; z : bignum;

    begin

    z := x;

  • 73

    i:= 1; j := z.l;

    while i

  • 74

    y := daomang(y);

    fillchar(z,sizeof(z),0);

    l := x.l;

    if y.l>l then l:= y.l;

    carry :=0;

    for i:=1 to l do begin

    sum := x.v[i] + y.v[i] + carry;

    z.v[i] := sum mod 10;

    carry := sum div 10;

    end;

    if carry>0 then begin

    inc(l);

    z.v[l] := carry;

    z.l := l;

    end

    else z.l := l;

    z := daomang(z);

    add := z;

    end;

    function sub(x,y: bignum): bignum; // Tr hai s ln x v y,

    ch x>y

    var sum, carry, l, i : integer; z : bignum;

    begin

    x := daomang(x);

    y := daomang(y);

    fillchar(z,sizeof(z),0);

    l := x.l;

    carry :=0;

    for i:=1 to l do begin

    sum := x.v[i] - (y.v[i] + carry);

    if sum

  • 75

    z.l := l;

    z := daomang(z);

    sub := z;

    end;

    function mult1(x: bignum; y : integer): bignum;

    // Nhn s ln x vi s nguyn y

    var sum, carry, l, i : integer; z : bignum;

    begin

    x := daomang(x);

    fillchar(z,sizeof(z),0);

    l := x.l;

    carry :=0;

    for i:=1 to l do begin

    sum := x.v[i]*y + carry;

    z.v[i] := sum mod 10;

    carry := sum div 10;

    end;

    if carry>0 then begin

    inc(l);

    z.v[l] := carry;

    z.l := l;

    end

    else z.l := l;

    z := daomang(z);

    mult1 := z;

    end;

    function mult(x, y: bignum): bignum; // Nhn hai s ln x v y

    var l, i, j, lech : integer; z, z1 : bignum;

    begin

    fillchar(z,sizeof(z),0);

    fillchar(z1,sizeof(z1),0);

    l := y.l;

    z := mult1(x,y.v[l]);

    lech := 0;

    for i:=l-1 downto 1 do begin

    z1 := mult1(x,y.v[i]);

    inc(lech);

    for j:= 1 to lech do z1 := mult1(z1,10);

  • 76

    z := add(z,z1);

    end;

    mult := z;

    end;

    BEGIN

    assign(g,fo); rewrite(g);

    read_input;

    hien(a); hien(b);

    c:=MULT(a,b); // C th thay bng add(a,b) ( hoc sub(a,b) vi a>b)

    hien(c);

    close(g);

    END.

    2.3.2. Bi tp 3. Tnh 5000!

    c s N t tp 5000GT.IN. Ghi kt qu 5000! ra tp 5000GT.OUT.

    Gi . 5000! c 16326 ch s. V vy dng mng A mt chiu kch thc

    khong 17000 phn t cha kt qu. thun tin khi nhn, ch s hng n v

    ca kt qu c cha vo phn t cui cng (v tr last) ca mng. Ch s

    hng cao nht (bn tri nht) ca kt qu v tr do bin first ch vo. Mi ln

    nhn (k-1)! vi k c k! ta thc hin nh sau:

    em k nhn ln lt vi cc ch s c trong mng A, theo th t t cui

    cng tr v firrt-5. Ch s hng n v ca tch c thay cho gi tr c ca ,

    phn cn li ca tch th lu vo bin carry mang sang gp vi tch ca k

    nhn vi tip theo.

    Mi ln nhn thm mt tha s, bin first li li v tri nhiu nht l 5

    phn t v gi tr ln nht ca cc tha s l 5000, gi tr ln nht ca ch s

    tri nht l 9 nn ch thm nhiu lm l 5 bn tri na sau mi ln nhn.

    2.3.3. Bi tp 4. S Catalan

    Xt tch n s M1, M2, , Mn l s M=M1.M2.Mn. S cch chn cp

    ngoc n vo tch ny c cc cch biu din khc nhau ca M gi l s

    Catalan. Nu coi s Catalan th nht ng vi n=1, th s Catalan th n c tnh

  • 77

    theo cng thc truy hi l 1

    ( ) ( ). ( )n

    i

    T n T i T n i

    (*). Hy vit chng trnh tnh s

    Catalan th n. Hn ch n200. (Khi n=200, s Catalan c 117 ch s).

    Gi .

    Cch 1. S dng qui hoch ng, xy dng mng mt chiu T(N) tnh

    cc s Catalan t s th nht dn v s th N theo cng thc truy hi (*). Thc

    hin php nhn v cng s ln.

    Cch 2. Nu coi s Catalan th nht ng vi n=0 th T[0]=1, T[1]=1,

    T[2]=2, T[3]=5, T[4]=14, Trong trng hp ny c th s dng cng

    thc:

    2

    2 ! 2 3 ... (2 )1( )

    1 1 ! ! 1 2...

    n

    n

    n n n nT n C

    n n n n

    , cn thc hin php chia

    s ln

    2.3.4. Bi tp 5. Tnh s bng Young

    Bng Young chun l bng cha mt hon v ca {1, 2, , n}, mi

    cha mt s, m dy s trn mi dng v trn mi ct l khng gim. V d vi

    n=3 c 4 bng Young chun l:

    1 2 3 1 2 1 3 1

    3 2 2

    3

    Thut ton Bumping xy dng bng Young chun nh sau:

    To cc hon v ca {1, 2, , n}. Vi mi hon v to ra, gi s l {p1, p2,

    , pn} ta xy dng bng Young (nu c) bng cch: chn ln lt cc pi vo

    bng. Bt u vi p1 a vo dng 1, ct 1 (dng trn cng, ct bn tri nht).

    Gi s xy dng xong t p1 n pk, by gi cn chn pk+1 vo bng ta lm nh

    sau: vi dng th nht, tm phn t u tin trn dng ny ln hn pk+1. Nu

    khng c th thm pk+1 vo dng ny. Ngc li gi s c pp ln hn pk+1 th

    thay pp bi pk+1, ri li dng pp xt tm v tr chn n vo dng th hai, tip

    tc xy dng bng cao dn. Nu khng xp c ht n pn th dng, chuyn

    sang hon v tip theo to bng khc.

    Cng thc truy hi tnh s lng bng Young chun to bi {1, 2, , n}

    l: U(1)=1, U2=2; U(n)=U(n-1)+(n-1).U(n-2)

    Lu . C th s dng mng lu tr cc s nguyn t gii.

    Bi ton. Xt M s t nhin n1, n2, , nm vi n1n2 nm>0. Chng ta

    xc nh bng Young cha n1+n2++nm s t nhin: 1, 2, , n1+n2++nm, sao

    cho dng th i c ni phn t (1 i m) sp tng theo th t t tri qua phi, v

  • 78

    cc phn t cng ct cng c sp tng t y ti nh (t dng 1 n dng

    m).

    V d bng Young vi m=4, n1=6, n2=4, n3=4, n4=1 nh hnh sau:

    1 2 5 9 10 15

    3 6 7 13

    4 8 12 14

    11

    Nhim v: Cho n1, n2, , nm tm s lng cc bng Young cha cc s 1,

    2, , n1+n2++nm.

    D liu vo. File input l YOUNG.IN c cu trc: Trn dng th nht l

    s t nhin m; trn dng th hai l: cc s n1, n2, , nm cch nhau du cch.

    Kt qu ra. File output l YOUNG.OUT cha s bng Young tm c.

    Hn ch: 1 m 20 ; ni 12 (1 im). V d:

    YOUNG.IN YOUNG.OUT

    2

    3 2

    5

    Minh ho 5 bng Young tm c:

    1 3 5 1 2 3 1 2 4

    2 4 4 5 3 5

    1 3 4 1 2 5

    2 5 3 4

    Gi .

    Bi ton ca chng ta l tm s bng Young theo khun dng cho trc

    (mi dng i ch c mt s lng nht nh l ni) nn khc

    bi ton tm s bng Young chun.

    Ngi ta chng minh c rng: S bng Young theo

    khun dng c th tnh bng n! chia cho tch cc di ci

    mc ca cc . di ci mc ca mi l s lng cc

    trn ci mc (bng tng ca 1 vi s lng bn phi v

    pha di ca ). Hnh bn minh ha ci mc ca (2,3) gm 6 mu en

    (nn mc ny di l 6).

    2.4. Mt s bi tp khc

  • 79

    2.4.1. Bi tp 6. Nhn nhanh a thc.

    Cho hai a thc c n s hng 10 1 1( ) ...

    n

    np x p p x p x

    v

    1

    0 1 1( ) ...n

    nq x q q x q x

    . Thc hin nhn hai a thc ny bng thut ton chia

    tr vi thi gian nhanh nh sau:

    Chia a thc p(x) thnh hai a thc: 2( ) ( ) . ( )n

    l hp x p x x p x vi

    12

    0 11

    2

    ( ) ...n

    l np x p p x p x

    v

    12

    11

    2 2

    ( ) ...n

    h n n np x p p x p x

    Tng t chia a thc q(x) thnh hai a thc: 2( ) ( ) . ( )n

    l hq x q x x q x

    12

    0 11

    2

    ( ) ...n

    l nq x q q x q x

    v

    12

    11

    2 2

    ( ) ...n

    h n n nq x q q x q x

    Khi : 2( ). ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ). ( ).n

    n

    l l l h h l h hp x q x p x q x p x q x p x q x x p x q x x

    t: ( ) ( ) ( )l l lr x p x q x , ( ) ( ) ( )h h hr x p x q x v ( ) ( ) ( ) . ( ) ( )m l h l hr x p x p x q x q x

    th:

    2( ). ( ) ( ) ( ) ( ) ( ) . ( ).n

    n

    l m l h hp x q x r x r x r x r x x r x x .

    2.4.2. Bi tp 7. (Clocks IOI-1994).

    a) Gii h phng trnh tuyn tnh bng phng php kh Gausse

    V d. Gii h phng trnh:

    3 4 8 (1)

    2 2 (2)

    2 5 1 (3)

    x y z

    x y z

    x y z

    c ma trn A=

    1 3 4

    1 1 2

    1 2 5

    Bng phng php cng i s Gauss kh dn cc h s nm pha di

    ng cho chnh ca ma trn A. C th: kh cc h s ca x1 hai phng

    trnh (2) v (3) thnh 0 bng cch thay (2) bi (2)=(1)-(2) v thay (3) bi

    (3)=(1)+(3). Tip theo kh h s ca x2 phng trnh (3) thnh 0 bng cch

    thay (3) bi (3)=(2)-2(3). Cui cng a v dng:

    1 3 4 8

    0 2 2 6

    0 0 4 8

    x y z

    x y z

    x y z

    Sau t phng trnh cui tm ra z, ngc ln cc phng trnh trn, tm

    dn ra y, ri x.

  • 80

    b) Bi ton. C 9 ng h l A, B, , I trong mng 33 (Hnh 1). Nhim

    v l quay mt tt c ng h v 12 gi vi cc php quay hp l. C 9 php

    quay hp l, mi php gi l mt php di chuyn. Cc php di chuyn c

    nh s t 1 n 9, chng s quay nhng mt ng h no mt gc 900 theo

    chiu kim ng h c cho nh sau:

    Php 1 ABDE

    Php 2 ABC

    Php 3 BCEF

    Php 4 ADG

    Php 5 BDEFH

    Php 6 CFI

    Php 7 DEGH

    Php 8 GHI

    Php 9 EFHI

    D liu. c 9 s t tp INPUT.TXT. Cc s ny cho v tr ban u ca

    cc mt ng h vi qui c: 0 l 12 gi, 1 l 3 gi, 2 l 6 gi, 3 l 9 gi. V d

    vi hnh v 1 th tp input c ni dung l:

    3 3 0

    2 2 2

    2 1 2

    Kt qu. Ghi vo tp OUTPUT.TXT dy ngn nht cc php di chuyn

    (cc s) quay tt c cc mt ng h v 12 gi. Trong trng hp c nhiu

    li gii, ch cn ghi mt li gii. Trong v d nu hnh 1, tp OUTPUT.TXT

    c th l:

    5 8 4 9

    Minh ho:

    3 3 0 3 0 0 3 0 0 0 0 0 0

    0 0

    2 2 2 5-> 3 3 3 8-> 3 3 3 4 -> 0 3 3 9-> 0

    0 0

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

    0 0

    Gi . C th m t tc ng ca cc php chuyn ti cc ng h trong

    bng 1:

    Hnh 1. V 9 ng h

  • 81

    Nhn thy ng h

    A ch b tc ng

    bi t1 php di

    chuyn 1, t2 php

    di chuyn 2 v t4

    php di chuyn 4.

    ng h B ch b

    tc ng bi t1

    php di chuyn 1,

    t2 php di chuyn

    2, t3 php di chuyn 3 v t5 php di chuyn 5. ...

    Do t bng 1 c th xy dng bng 2.

    K hiu trng thi ca ng h V trc khi thc hin dy di chuyn l v v

    sau khi thc hin l v. Trng thi mi v trng thi c quan h vi nhau theo

    cc ng thc sau (cng theo mod 4) y vec