Anda di halaman 1dari 7

C S Lp Trnh Bi Tp Ln 2

Phin bn 1.0 1. Gii thiu Hong hu Anne, v vua Louis XIII, tng chui ht kim cng ca mnh cho qun cng Buckingham, Anh Quc. Bit c vic ny, Hng Y Gio Ch Richelieu bn xi gic vua Louis XIII t chc bui d v vi yu cu c bit l hong hu phi eo chui ht kim cng trn. Nu chui ht kim cng khng c mang v t Anh Quc kp ngy, hong hu Anne s mt tt c: quyn lc, a v v danh d. Nghe theo ting gi ca tinh thn m thng, dArtagnan quyt nh cng cc bn chn mt ngi sang tn London ly nhng ht kim cng qu gi v cho hong hu. Richelieu t rt nhiu thuc h trn ng ngn bc cc chng Ng Lm Qun. Nhng liu c tr ngi no ngn c nhit huyt ca nhng tri tim tui tr khi chng c kt ni bng tnh bn khng v li? S dng cm ca cc chin binh Ng Lm Qun bin cu chuyn v cuc hnh trnh bo v nhng ht kim cng ca hong hu thnh mt thin anh hng ca trn y cht th. 2. Mc tiu bi tp Trong bi tp ln ny, sinh vin s c cung cp mt file d liu nhp cha thng tin ca hip s Ng Lm Qun trn hnh trnh n London thu v nhng ht kim cng. Chng trnh s in ra mn hnh kt qu cuc hnh trnh (m t chi tit s c trnh by r hn phn 4). Mc tiu bi tp ln 2: gip sinh vin hiu v vn dng c cc cu trc lp, cc kiu d liu trong ngn ng C++. Qua , sinh vin vn dng t duy lp trnh xy dng cc thut ton gii quyt tng vn c th. 3. D liu nhp D liu nhp ca chng trnh c cha trong tp tin mang tn input.txt. Tp ny s cha cc thng tin theo nh dng nh trong hnh bn di. Trong : R: s nguyn ngu nhin nm trong khong [0..10]. R N: tng s ht kim cng cn ly v, l s nguyn c gi tr [1..99]. N ID: s nguyn nm trong khong [1..4], ngha nh sau: ID o ID == 1: Ng Lm Qun l dArtagnan, c HP == 999. M o ID == 2: Ng Lm Qun l Athos, c HP == 900. E1 E2 E3 En o ID == 3: Ng Lm Qun l Porthos, c HP == 888.
HK II nm hc 2012 - 2013 Trang 1

C S Lp Trnh Bi Tp Ln 2
o ID == 4: Ng Lm Qun l Aramis, c HP bng 777. M: s tin ban u Ng Lm Qun mang theo, l s nguyn thuc [0..999]. Ei: m s kin ca cc s kin xy ra trn hnh trnh n London. Hnh trnh n London s bao gm nhiu s kin, mi s kin s c NH CH S bt u t 1. Mi s kin s c m t bng mt gi tr s, gi l m s kin. ngha tng ng ca tng s kin c m t trong Bng 1. S s kin l khng c nh, c th thay i tu theo testcase. Mt s kin c th xy ra nhiu ln. S c ti a 1000 s kin xy ra. Cc s kin c trnh by trn mt dng. V d 1: Vi d liu nhp l 3 12 1 300 131 401 999 Ng Lm Qun l dArtagnan, cn phi i ly 12 ht kim cng, c s tin ban u l 300 ng vng. Cc s kin din ra trn ng i nh sau: S kin 1: Ly c mt ht kim cng mu xanh. S kin 2: Gp mt v binh ca t tng. S kin 3: Gp Paladin Lancelot. 4. D liu xut Chng trnh s chm dt khi mt trong cc trng hp sau xy ra: Trng hp 1: Ng Lm Qun thu thp s ht kim cng xanh v cn thit. Kt qu s xut ra mn hnh mt gi tr MainResult c tnh nh sau: MainResult = HPC + MC + Vd Trong HPC, MC v Vd ln lt l cc gi tr HP hin hnh, s tin cn li ca Ng Lm Qun ngay khi ly c ht kim cng cui cng v tng gi tr ca cc ht kim cng ly c. Trng hp 2: HP ca Ng Lm Qun b gim xung nh hn hoc bng 0. Chng trnh s dng ngay lp tc v xut ra gi tr MainResult = -1. Trng hp 3: S tin ca Ng Lm Qun b gim xung nh hn 0. Chng trnh s ngng ngay lp tc v xut ra gi tr MainResult = -1. Trng hp 4: Ng Lm Qun i n s kin cui cng En nhng vn cha ly s ht kim cng cn thit. Kt qu s xut ra gi tr MainResult = 0. Trng hp 5: Ng Lm Qun no nh thng 3 Titan th khng cn i tip m chng trnh s lp tc dng v in ra kt qu ging trng hp 1 (xem mc 4i chi tit v Titan).

HK II nm hc 2012 - 2013

Trang 2

C S Lp Trnh Bi Tp Ln 2
M s kin Ei 1XY 2XY 3XY 4XY 5XY 6XY 7XY 8XY 9XY Bng 1 Cc s kin trn hnh trnh n London ngha s kin Nht c mt ht kim cng xanh Nht c mt ht kim cng n nh tr B V Binh mai phc Gp li bun vui tnh Nina de Rings Nht c Avatar bin hnh Gp ngi khng l Titan Gp n b tc Milady de Winter Gp Paladin Lancelot do Richeulieu triu hi v

Trong tng m s kin, XY c gi l gi tr tng ng ca m s kin. Khi gp cc s kin trn, cc hnh ng sau s c thc hin: a) Nu gp s kin c m l 1XY hoc 2XY, Ng Lm Qun nht c mt ht kim cng c gi tr l XY ng vng. V d 2: Vi d liu nhp l 0 1 3 201 210 999 Sau s kin 1, Porthos nht c mt ht kim cng mu , yu cu v s ht kim cng cn tm. Chng trnh kt thc ngay lp tc. Kt qu in ra 888 + 201 + 10 = 1099. b) Do ch thch gi ht kim cng , Porthos s bn ngay lp tc cc ht kim cng xanh trong mi ln kim c v i ly s tin vng tng ng. c) Nu b v binh mai phc s kin Ei, Ng Lm Qun s giao u vi v binh theo cng thc: t h1 = XY *R; h2 = (HP + h1) % (100 + R). Nu HP >= h1, Ng Lm Qun thng => c thm mt s tin l XY, nu h2 = 0, Ng Lm Qun b thng v HP b gim i XY n v. Nu HP < h1, Ng Lm Qun thua trn v HP ca ng lm qun cng b gim i XY n v (vi XY l gi tr tng ng vi m s kin gp v binh). V d 3: Vi d liu nhp l 4 1 3 931 492 210 999 s kin 1, Porthos gp v binh, h1 = (492 400) * 4 = 368, h2 = (888 + 368) % (100 + 4) = 8. Do HP >= h1 , nn Porthos ginh chin thng s tin ca Ng Lm Qun tng ln min((931 + 92) , 999) = 999.

HK II nm hc 2012 - 2013

Trang 3

C S Lp Trnh Bi Tp Ln 2
d) i vi Ng Lm Qun l Athos, v binh thng c Athos ch khi gi tr h2 phi l mt s nguyn t ln hn R. Ngc li, Athos s chin thng ngay c khi HP <= h1. Athos l anh hng cng trc nn khng ly tin ca i th khi thng trn. V d 4: Vi d liu nhp l 7 1 2 931 493 210 999 s kin 1, Athos gp v binh, h1 = 651, h2 = 53; 53 l s nguyn t , v binh ginh chin thng, HP ca Porthos gim cn 900 93 = 807. e) Khi n nh tr, Ng Lm Qun dng tin phc hi HP theo t l 1 i 1 n khi ht tin hoc HP c phc hi v gi tr HP ban u. S tin dng phc hi khng th vt qu XY ng vng vi XY l gi tr tng ng ca m s kin n nh tr. V d 5: Vi d liu nhp l 10 1 4 331 493 354 210 999 s kin 1, Aramis gp v binh, do h1=930 > HP = 777 nn Aramis thua, HP gim cn 777 93 = 684. s kin 2, Aramis n nh tr, dng tin vng phc hi HP nhng ch tng c thm 54 (do gi tr tng ng m s kin n nh tr l 354) nn HP =738, tin vng cn li 331 54 = 277. f) V tnh hunh hoang ca mnh, Porthos lun lun b tnh tin nhiu hn bnh thng phc hi HP. Chng phi tn P ng vng phc hi 1 n v HP, vi P l s nguyn t nh hn v gn R nht (nu R l 7 th P s l 5). Nu R nh hn 3, ch qun s khng giao dch vi Porthos. V nu Porthos ch cn 2 ng vng tr xung, ch qun cng s khng giao dch vi Porthos. V d 6: Vi d liu nhp l 10 1 3 331 493 354 210 999 s kin 1, Porthos gp v binh, do h1=930 > HP = 888 nn Porthos thua, HP gim cn 888 93 = 795. S kin 2, Porthos n nh tr, dng tin vng phc hi HP ch tng c thm 7 (v gi tr tng ng khi n nh tr l 54 / 7 = 7) nn HP = 795 + 7 = 802, tin vng cn li 331 7*7 = 282. g) Khi gp li bun vui tnh Nina de Rings, nu Ng Lm Qun thng v Ng Lm Qun l Porthos th s c nng li bun tng cho mt vin kim cng c gi tr l XY; ngc li, Ng Lm Qun s c tng mt vin kim cng xanh c gi tr l XY. Trong
HK II nm hc 2012 - 2013 Trang 4

C S Lp Trnh Bi Tp Ln 2
trng hp s kim cng xanh v l hai s nguyn t cng nhau th Nina s tng o gip mythril. Mc o gip ny, lng HP b mt ca ng lm qun khi thua trn hoc b thng sau ny s l round(XY * a) vi a = (R+1)/(2R) vi round l php lm trn n s nguyn gn nht, XY l gi tr tng ng vi m s kin. Tuy nhin, nu Ng Lm Qun thua, th chng s mt i mt na s tin v HP gim i XY n v. Ng Lm Qun ch gp c Nina mt ln, nhng ln xut hin sau, Nina s t ng b trn khi gp chng Ng Lm Qun . V d 7: Vi d liu nhp l 10 1 3 331 593 210 999 s kin 1, Porthos gp Nina de Rings, do HP = 888 < h1 = 930 nn Porthos thua trn v b mt i mt na s tin. S tin vng cn li sau s kin u tin l 165 (331 / 2 = 165) v HP gim i 93 n v . V d 8: Vi d liu nhp l 10 6 4 331 134 135 257 211 218 563 499 210 s kin th 6, Aramis gp Nina de Rings, do HP = 777 > h1 = 630 nn Aramis thng trn v hin ti Aramis c 2 vin kim cng xanh (nht c s kin 1 v 2), 3 vin (nht s kin 3, 4 v 5) do chng s nhn c o gip mythril . n s kin th 7, Aramis gp v binh, do HP = 777 < h1 = 990 nn Aramis thua trn, HP b gim xung cn 777 round (99 * (10+1) / 210) = 776. Sau khi nht vin kim cng 210, chng trnh s kt thc. Kt qu xut ra s l: 1272. h) Nu nht c Avatar khi s kim cng xanh nhiu hn hoc bng s kim cng , HP ca cc Ng Lm Qun s c tng ln lng XY - gi tr tng ng ca m s kin - nhng khng c vt qu Max HP tng ng ca Ng Lm Qun , ngc li s V Binh v Titan s tng gp i (mt V Binh hoc Titan mi ging nh V Binh v Titan c s xut hin ngay pha sau ngi c). Nhng ln gp avatar sau , nu iu kin tng HP c tha, nh hng ca avatar trc s mt i v HP c tng ln. Nu khng tha iu kin tng HP, nh hng ca avatar trc vn nh c. V d 8: Vi d liu nhp l 0 2 4 331 293 624 425 110 999 s kin 2, Aramis nht c Avatar trong khi s lng kim cng ln hn kim cng xanh nn s lng V Binh s tng gp i. Do Aramis phi chin u vi 2 V Binh c m s kin l 425.
HK II nm hc 2012 - 2013 Trang 5

C S Lp Trnh Bi Tp Ln 2
i) Richelieu, dng cc mi quan h chnh tr ca mnh, bt lin lc vi chnh quyn Hy Lp mi nhng ngi khng l Titan c i v gip mnh. Cch tnh thng thua khi Ng Lm Qun giao tranh vi Titan tng t nh m t trn. Khi thua hoc b thng, Ng Lm Qun mt i mt lng HP c gi tr l Ei (nu khng c mythril) hoc l round(Ei * a) vi a = (R+1)/2R (nu c mythril). V cc Titan sng t thi c i, khng bit khi nim tin bc nn Ng Lm Qun s khng c thm tin khi chin thng. V d 9: Vi d liu nhp l 0 1 4 331 793 110 Kt qu xut ra s l : 777 + 331 + 10 = 1118. j) Kh nng chin u ca cc Titan ch yu da trn sc mnh, v vy khi gp Porthos th kh nng ny v ngha. Nu Porthos gp mt Titan, Titan ny s khng giao tranh vi Porthos, ngc li Titan s gip Porthos nh thng ba V Binh tip theo trn ng i. Trong trng hp gp mt Titan khc thay v V Binh, Titan trc t ng bin mt. Khi nh thng cc V Binh vi s gip ca Titan, Porthos s khng c thm tin vng. V d 10: Vi d liu nhp l 0 1 3 331 793 433 451 721 425 468 491 415 210 Kt qu xut ra s l : 888 + 331 + 15 + 10 = 1244. k) Nu dArtagnan gp Milady, chng trnh dng ngay lp tc v xut ra gi tr -1. Nu Athos gp Milady, s tin s c t ng tng ln thnh 999 v tip tc hnh trnh. Trng hp Aramis hoc Porthos ang c HP <= 700 nu gp Milady th cc vin kim cng xanh (i vi Aramis) hoc (i vi Porthos) s b loi b mt lng c xc nh bng c s chung ln nht ca X v Y (vi X v Y l hai ch s trong gi tr tng ng ca m s kin - trong trng hp X = 0 hoc Y = 0 th s kim cng khng b gim). Cc vin kim cng b loi b ln lt theo th t l cc vin kim cng c nht gn nht. Aramis hoc Porthos vn tip tc hnh trnh sau khi gp Milady. V d 11: Vi d liu nhp l 10 5 4 331 495 134 146 254 189 822 246 271 121 s kin 1, Aramis thua trn trc v binh, HP b gim cn 682. Sau Aramis nht ln lt cc vin kim cng 134, 146, 254, 189 (3 vin xanh, 1 vin ). s kin th 6, Aramis chm trn Milady. Do HP <= 700, 2 vin kim cng xanh ca Aramis b loi b
HK II nm hc 2012 - 2013 Trang 6

C S Lp Trnh Bi Tp Ln 2
ln theo th t l: vin 189 ( s kin th 5), vin 146 s kin th 3. Sau Aramis tip tc hnh trnh. Kt qu xut ra mn hnh l: 1239. l) Gio s Robert Langdon ti i hc Harvard pht hin ra mt b mt lch s vn c che giu hng my trm nm: t tng Richelieu vn l mt Paladin c i xm nhp chnh trng vi mc ch bo v nc Php trc nhng mi e do t lin minh Anh Quc, o, Ty Ban Nha v H Lan. V vy Richelieu c kh nng triu hi cc Paladin c i khc gip mnh. ngn cn cc Ng Lm Qun sang Anh Quc, Richelieu triu hi v Paladin ni ting Lancelot. u vi Lancelot, cc Ng Lm Qun gn nh khng c c hi chin thng. Chng trnh s kt thc ngay tc khc v xut ra kt qu l MainResult = -1, tr cc trng hp sau xy ra: - Ng Lm Qun gp Lancelot s kin Ei, trong i l mt s nm trong dy Fibonacci (http:/en.wikipedia.org/wiki/Fibonacci_number). Trong trng hp ny hai bn giao u tng t nh m t trn. Nu ng lm qun thua, chng trnh kt thc kt qu xut ra l MainResult =-1. Nu ng lm qun thng, HP s phc hi v HP ban u v s tin c tng ln gi tr 999. V d 12: Vi d liu nhp l 10 1 4 331 492 945 144 s kin 1, Athos thua v binh, HP gim xung cn 685. s kin 2, Athos gp Lancelot. Do 2 l mt s trong dy Fibonacci, nn hai bn giao u nh m t. Kt qu Athos chin thng, HP phc hi v 777, s tin vng tng ln 999. Kt qu in ra mn hnh s l: 777 + 999 + 44 = 1820. m) Trc mt trn nh, Aramis lun tin liu trc kt qu. Nu thy rng kt qu ca trn nh s lm cho HP ca mnh gim xung di 1, Aramis s b qua trn nh ny v tin tip ti s kin tip theo. Aramis khng trn c khi gp Lancelot. V d 13: Vi d liu nhp l 10 1 4 331 792 495 144 s kin u tin, Aramis s b qua trn nh vi Titan v chng nhn thy rng mnh s thua v HP s xung di 0. Aramis chin u vi v binh s kin th 2. Kt qu l HP ca chng b gim xung cn 682. Sau khi nht kim cng s kin 3, chng trnh kt thc. Kt qu xut ra mn hnh l 1057. C BIT LU : Gi tr in ra mn hnh l mt s NGUYN nh cc v d nu. SINH VIN KHNG IN THM B T K THNG TIN NO KHC RA MN HNH (k c du xung hng).
HK II nm hc 2012 - 2013 Trang 7

Anda mungkin juga menyukai