34
Diskontna matematika 1 Laboratorijske vježbe Prvi ciklus ožujak 2015.

prvi ciklus [164,35 KiB]

  • Upload
    lequynh

  • View
    234

  • Download
    2

Embed Size (px)

Citation preview

Page 1: prvi ciklus [164,35 KiB]

Diskontna matematika 1Laboratorijske vježbe

Prvi ciklus

ožujak 2015.

Page 2: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Popis zadataka

Kata [1]

Hanojski tornjovi [1]

Brojanje sa zečevima [1]

Izraz [1]

Fibonaccijev zec [1]

Mali veliki Fibonacciji [1-2]

Tetka [1-2]

Botanika [1-2]

Škola [1-2]

Opet Hanojski tornjovi [2]

Binarna stabla [2]

Igra [2]

Tajni zadatak [2]

Zagrađivanje okoliša [2]

Igranje sa sumama [2]

2

Page 3: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Drva [2]

Minecraft [2]

Leonardove sume [2]

Dvodimenzionalno polje [1-2-3]

Razmještaji [1-2-3]

Projekt [1-2-3]

Nemogući bijeg [3]

3

Page 4: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Kata [1]PERMUTACIJE

Tekst zadatka

Na početku jedan lagani, za zagrijavanje. Za dani niz od N pozitivnih cijelih brojeva, ispišite njegovu k-tu permutaciju. Broj N neće biti prevelik, najviše do 10,dok će k naravno biti manji od 10!

4

Page 5: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Hanojski tornjovi [1]HANOJSKI TORNJEVI, GRAFOVI

Tekst zadatka

Za zadani, ne preveliki, prirodan broj n koji predstavlja broj diskova u problemu stri tornja, pomoću prikaza problema preko grafa izračunati najmanji broj korakaza prebacivanje svih diskova koji se na početku svi nalaze na tornju A na konačni toranj C. Također, potrebno je prikazati sva međustanja koja vode do rješenja.

Npr. u situaciji kada imamo 4 diska stanje BCAA govori da se disk broj 4 (najveći disk) nalazi na tornju B, disk broj 3 se nalazi na tornju C, a diskovi broj 2 i 1 (najmanji disk) se nalaze na tornju A (naravno, disk 2 je ispod diska 1).

NapomenaZa detaljnije objašnjenje pogledati opis iz knjižice 1. Uvodni primjer o ovoj temi.

5

Page 6: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Brojanje sa zečevima [1]FIBONACCIJEVI BROJEVI

Tekst zadatka

Fibonaccijevi brojevi svima su nam dobro poznati, uglavnom po svojem pojavljivanju u mnogim prirodnim procesima, kao što je i poznato razmnožavanje zečeva. No, postoje i druge, mnogo manje poznate primjene Fibonaccijevih brojeva, jedna od kojih je i zapisivanje prirodnih brojeva u Fibonaccijevoj bazi. U ovom zadatku se za dani prirodni broj n traži njegov zapis u Fibonaccijevoj bazi.

NapomeneNije dozvoljen bilo kakav zapis, već rezultat mora zadovoljavati sljedeće karakteristike:

1. Zapis smije sadržavati samo znamenke 1 i 0

2. U zapisu broja nigdje se ne smiju pojaviti dvije uzastopne jedinice

Razlog ovim uvjetima jest jednoznačnost, jer bi u suprotnom isti broj bilo moguće zapisati na više različitih načina. Ovaj odabrani zapis naziva se Zeckendorfov prikaz.

6

Page 7: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Izraz [1]AD-HOC

Tekst zadatka

Zadan je izraz od n cijelih brojeva (dakle, mogući su i negativni brojevi) koji su

zapisani na ovaj način: a1/a2/a3/ .../an ( odjeljuju ih znakovi za dijeljenje ).

Vaš zadatak jest, ne mijenjajući poredak članova niza, postaviti zagrade tako da vrijednost izraza bude što veća.

Napomene:• Svako rješenje, ovisno o složenosti, dobit će određen broj bodova (rješenje koje može riješiti

problem za veličinu niza do 20 dobit će manje bodova od onog rješenja koje rješava problem za100 ili 100 000 brojeva).

• Zadatak se može riješiti na nekoliko načina, od kojih su neka više programerska a neka više

matematička. Ako pronađete matematičko rješenje, za dokaz njegove točnosti sigurno ćemo vas i dodatno nagraditi.

7

Page 8: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Fibonaccijev zecFIBONACCIJEVI BROJEVI

Tekst zadatka

Vjekoslav Mrkva, zvani Vjeko, osmislio je način kako računati Fibonaccijeve brojeve. Na ploču zapiše 0 i ispod nje 1 te uzastopno ponavlja dvije operacije:

G: zamijeni gornji broj sa sumom oba

D: zamijeni donji broj sa sumom oba

Ako izvede n operacija, dobit će (n + 1). Fibonaccijev broj. No kako je nestašni Vjeko vječito zaigran i misli mu često bježe što na mrkve što na male zečice, zna mu se potkrasti pogreška te više puta ponovi istu operaciju.

Jedanput je računajući F( 7 ) umjesto operacija GDGDGD napravio operacije GGGDDG te učinio tri pogreške, gdje je broj pogrešaka jednak broju susjednih, istih operacija GG ili DD.

Pretpostavite da je prva operacija koju je Vjekoslav napravio G.

Za dani broj operacija n i konačno rješenje koje piše na ploči r izračunajte najmanji mogući broj pogrešaka te ispišite jedan mogući niz od n operacija.

Primjer

Za n = 6 i r = 10, najmanji mogući broj pogrešaka je 2, a niz je GDDGGD

8

Page 9: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Mali veliki Fibonacciji [1-2]FIBONACCIJEVI BROJEVI, REKURZIVNE RELACIJE

Tekst zadatka

Fibonaccijevi brojevi... Svima nam vec pomalo izlaze i na uši, ali što je tu je, za demonstraciju nekih ideja kao da su stvoreni, pa bi ih bilo šteta neiskoristiti.

Dobro je poznata rekurzivna relacija kojom su oni zadani: Fn=Fn−1+Fn−2,

naravno uz početne uvjete F0=F1=1. No možda još niste čuli za poopćenje ove

relacije za negativne brojeve n. To se može učiniti promjenom rekurzije na

sljedeći način: Fn−2=Fn−Fn−1

Također, možda niste još naučili kako izračunati n-ti Fibonaccijev broj za jako, jako veliki n, recimo milijardu. E, pa sad imate priliku pozabaviti se s obje stvari!

Općenito se linearne rekurzije mogu zapisati u matričnom obliku. Na primjeru naravno Fibonaccijevih brojeva, to izgleda ovako:

[0 11 1]⋅[Fn−2

Fn−1]=[Fn−1

Fn ](Čitaj: umnožak matrice transformacije A s vektorom prethodnih vrijednosti daje vektor novih vrijednosti, s pomakom n-a za 1)

Uzastopnim množenjem vektora početnih vrijednosti matricom A može se dobiti bilo koji Fibonaccijev broj. A čemu sve ovo? Pa, uzastopno množenje je zapravo potenciranje matrice A, a potenciranje možemo izvesti u logaritamskoj složenosti(takozvanim logaritamskim potenciranjem).

I napokon, vaš zadatak jest za dani cijeli broj n pronaći n-ti Fibonaccijev broj, gdje n može biti poprilično velik ili pak malen (jako negativan).

9

Page 10: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Napomene• Broj n bit će u intervalu od –1 000 000 do 1 000 000

• Kako su ti Fibonaccijevi brojevi mnogostruko veći od najvećeg broja koji stane u 64-bitni

cjelobrojni tip podataka, kao rješenje ispišite samo ostatak n-tog Fibonaccija pri djeljenju s 100 000 007

• As always, Google is your friend. Ako negdje zapnete, slobodno nas pitajte za pomoć.

10

Page 11: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Tetka [1-2]CATALANOVI BROJEVI, PREBROJAVANJA

Tekst zadatka

Tetka, stara kao što i jest, dobila je konačno svoje omiljene tablete od doktora za bolna križa koje će piti svaki dan.

Od svoje prijateljice (koja je, inače, stručnjak za sve što se tiče liječenja) dobila je savjet da nema potrebe da svaki dan uzima cijelu tabletu, već, ako je tableta cijela, može je prepoloviti i jednu polovicu uzeti, a drugu vratiti nazad u kutiju. No, ako je tableta koju je uzela iz kutije već jednom bila prepolovljena, onda je nikako ne smije ponovno prepolavljati, već je mora uzeti.

Tako je tetka odlučila poslušati taj (sumnjiv) savjet i svaki dan tablete uzimati na ovaj način:

1. izvadi nasumično tabletu iz kutije;

2. ako je tableta cijela, može je uzeti cijelu ili je može prepoloviti pa jednu polovicu uzeti sada, a drugu vratiti u kutiju za poslije

3. ako je tableta već bila prepolovljena, mora je odmah uzeti (ne smije je dalje prepolavljati).

Tetku sada zanima na koliko načina može isprazniti svoju kutiju s N tableta. Dva načina pražnjenja kutije su različita ako je u i-tom danu u jednom načinu uzela cijelu tabletu, a u drugom polovicu tablete gdje je i oznaka za prvi takav dan.

NapomeneZa obavjesti o indikacijama, mjerama opreza i nuspojavama, upitajte svog liječnika ili ljekarnika.

Slobodno se može pretpostaviti da se doktor ne razbacuje tabletama, tj. da će vrijediti N ≤ 30 i da će rješenje stati u 64-bitni cjelobrojni tip podatka.

11

Page 12: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

U slučaju da pronađete rješenje i za veći broj tableta, ispišite rješenje kao ostatak pri dijeljenju s 100 000 007. To rješenje donosit će i veći broj bodova.

12

Page 13: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Botanika [1-2]CATALANOVI BROJEVI

Tekst zadatka

Nedavno je u sklopu UN-ovog istraživanja zaštićenih biljnih vrsta organiziranabotanička ekspedicija u kojoj su sudjelovali mnogi vrhunski svjetski stručnjaci. Iako je cilj ekspedicije bilo samo popisivanje ugroženih vrsta u nepristupačnim šumama Azerbajdžana, ono što su tamo pronašli potpuno ih je zapanjilo. Naime, na jednom proplanku u već spomenutoj šumi pronašli su novu biljnu vrstu. I to nimanje ni više nego jedno pravo, živuće binarno stablo. Kada su napokon uspjeli doći k sebi od čuđenja, prvo što su učinili je ono što im je kao znanstvenicima prirodno palo na pamet: posjekli su ga i odnjeli u laboratorij na daljnu analizu.

Prvo čemu su pristupili bila je genetska analiza, no i tu su ih dočekala iznenađenja. Genetski kod ovog stabla ne sastoji se od 4 baze, već ih je puna engleska abeceda. Još k tome, oblik molekule DNA jest također binarno stablo, sasljedećim svojstvima:

1. U svakom vrhu nalazi se jedna baza, malo slovo engleske abecede,

2. U lijevom podstablu nekog vrha nalaze se samo vrhovi koji imaju leksikografski manje, a u desnom vrhovi koji imaju leksikografski veće slovo.

Kôd takvog binarnog stabla može se zapisati na ovaj način (na početku se nalazimo u korijenu stabla):

1. Zapišemo slovo koje se nalazi u korijenu

2. iza njega dodamo kôd lijevog, potom i desnog podstabla

13

Page 14: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Primjer: Kod ovog stabla jest cabd

E sad, znanstvenici nebi bili znanstvenici kada se nebi pitali kako genetski modificirati ovo čudesno stablo da na njemu rastu naranče. I zato im treba vaša pomoć.

Zamislimo sva moguća stabla s n vrhova koji su označeni s prvih n slova engleskeabecede. Također, zamislimo da imamo listu kodova tih stabala u leksikografskom poretku. Vaš zadatak jest ovo: za zadani broj vrhova n i prirodni broj k ispisati k-ti kod iz te liste, jer je taj podatak navodno jako koristan.

Npr. ako je broj vrhova 3 tada lista kodova u leksikografskom poretku izgleda ovako: abc, acb, bac, cab, cba.

Napomena:Broj vrhova neće biti veći od 26.

14

Page 15: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Škola [1-2]PREBROJAVANJA

Tekst zadatka

Djeca su u školi danas bila jako nemirna i zato je učiteljica smislila novi način kako da ih primiri. Posjela ih je u krug, njih 2n i rekla da će sada svatko u paru igrati znamenitu igru šije-šete jedan protiv drugog. Kako je učiteljica jednom davno razmišljalja o studiranju matematike te dan danas joj za oko zapnu zanimljive matematičke mozgalice, tako joj je sada došlo pitanje: koliko postoji načina da se 2n djece podijeli na n parova kako bi igrali šije-šete?

Napomena:Ako program rješava problem za velike n, potrebno je ispisati rješenje kao ostatak pri dijeljenju s 100 000 007. Takvo rješenje donosti će i veći broj bodova.

15

Page 16: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Opet Hanojski tornjovi [2]HANOJSKI TORNJEVI, GRAFOVI

Tekst zadatka

Za zadani (ne preveliki) prirodan broj N koji predstavlja broj diskova u problemu s tri tornja pomoću prikaza problema preko grafa izračunati najveći broj koraka za prebacivanje svih diskova koji se na početku svi nalaze na tornju A na konačni toranj C. Također, potrebno je prikazati sva međustanja koja vode do rješenja.

Npr. situaciji kada imamo 4 diska stanje BCAA govori da se disk broj 4 (najveći disk) nalazi na tornju B, disk broj 3 se nalazi na tornju C, a diskovi broj 2 i 1 (najmanji disk) se nalaze na tornju A (naravno, disk 2 je ispod diska 1).

NapomenaZa detaljnije objašnjenje pogledati opis iz knjižice 1. Uvodni primjer o ovoj temi.

Ako vam zadatak izgleda identično kao i prethodni, bolje čitajte!

16

Page 17: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Binarna stabla [2]PREBROJAVANJA, CATALANOVI BROJEVI

Tekst zadatka

Na predavanju i u knjižici spomenuto je i obrađeno pitanje koliko postoji binarnihstabla s N vrhova. No to je malo bezveze, mi imamo nešto bolje! Zanimljivije pitanje glasi: Koliko postoji binarnih stabala s N vrhova čija je visina najmanje H?

Napomene• Možete pretpostaviti da će N biti takav da će rješenje stati u 64-bitni cjelobrojni tip podatka.

• Također, vrijedit će H ≤ N.

17

Page 18: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Igra [2]AD-HOC

Tekst zadatka

Ante i Branko igraju jednu naoko dosadnu i beznačajnu igru. Na ploči se nalaze dva prirodna broja A i B. Prvi na redu je Ante. On može broj A zamijeniti brojem A – k•B ili broj B zamijeniti brojem B – k•A, gdje je k bilo koji prirodan broj. Tada je na redu Branko i on postupa na isti način. Ante i Branko igraju naizmjenično sve dok jedan od njih na ploču ne napiše broj koji je manji ili jednak nuli. Izgubio je onaj ograč koji to napravi.

Par brojeva (A, B) nazivamo pobjedničkim ako će Ante uvijek pobjediti što god Branko učinio.

Vaš zadatak jest za zadane brojeve A1,A2,B1, B2 odrediti koliko postoji pobjedničkih parova (A, B) koji zadovoljavaju uvjete: A1 ≤ A ≤ A2 te B1 ≤ B ≤ B2.

Napomene: Ulaz će biti oblika: A1 A2 B1 B2

Rješenje koje provjerava je li samo jedan određeni par pobjednički, recimo (A1, B1), također ćemo bodovati s određenim brojem bodova.

U općenitom slučaju vrijedit će:

1 ≤ A1 ≤ A2 ≤ 106,

1 ≤ B1 ≤ B2 ≤ 106.

18

Page 19: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Primjeri:

> 11 11 2 2< 1

> 1 6 1 6< 20

19

Page 20: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Tajni zadatak [2]AD-HOC, CATALANOVI BROJEVI

Tekst zadatka

Dživo, tajni špijun, nalazi se na tajnom zadatku u beskonačnom "desnom" (hoću reći nema negativnih x) cjelobrojnom koodrinatnom sustavu. Dživo, tajni špijun, znade kako se mora kretati u njemu da ga neprijatelji ne otkriju. Dživo, tajni špijun, uvijek znade u kojem se polju nalazi (i to polje označava s (x, y), x ≥ 0, gdjeje x cijeli broj), a ovo su pravila po kojima se kreće:

1. Ako vrijedi y ≥ x/2, onda se može kretati samo prema gore ili desno, tj. na polje (x, y+1) ili (x+1, y),

2. Ako vrijedi y ≤ x/2, onda se može kretati samo prema dolje ili dijagonalo dolje-desno, tj. na polje (x, y-1) ili (x+1, y-1),

3. Na poljima oblika (2k, k), gdje je k prirodan, može se kretati prema gore ili dolje ili dijagonalno dolje-desno, tj. na polje (x, y+1) ili (x, y-1) ili (x+1, y-1),

4. Na polja oblika (2k + 1, k), gdje je k nenegativan cijeli broj, ne smije nikako stati jer su na tim poljima postavljene mine,

5. Polja za koje vrijedi y < -x su se neprijateljska područja i po njima se ne smije nikako kretati jer bi ga odmah primijetili.

Dživo, tajni agent, na početku se nalazi na polju (0, 0). Iz njega se može pomaknuti jedino prema gore ili dijagonalo dolje-desno, tj. na polje (0, 1) ili (1, -1). Njegov naum jest što bliže se približiti neprijateljskom području, tj. želi doći do polja (x, -x). Dživo, tajni agent, svjestan je da na početku već stoji na jednom takvom polju (0, 0), ali ga zanima na koliko načina može doći do nekog zadanog polja (x, -x) krećući se tako da ga neprijatelji ne primijete (tj. poštujući gornja pravila).

20

Page 21: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Grafički prikaz mogućih kretnji

Napomene:Ulazani podatak jest samo prirodan broj x koji označava polje (x, -x) za kojeg se Dživo, tajni agent, pita koliko ima načina da dođe do njega.

Ovisno o veličini x za kojeg program rješava problem, rješenja će dobiti različit broj bodova. Priznavat će se i bodovati i sâmo matematičko rješenje.

21

Page 22: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Zagrađivanje okoliša [2]CATALANOVI BROJEVI

Tekst zadatka

U vašem selu nedavno je otkrivena nafta. Zemljište na kojemu je nalazište je u susjedovu vlasništvu, te je on odlučio zaraditi velike pare, bušeći naftu i pritom sene previše osvrtati na sigurnosne propise. Kako ste vi ekološki osvješteni i uz to se jednoga jutra ne biste htjeli probuditi u lokvi iscurjele nafte ili neke druge kemikalije, odlučili ste postaviti preventivne mjere. Preko interneta ste naručili nekoliko vrsta ekoloških zagrada, od kojih svaka vrsta sprječava razlijevanje jedne vrste kemikalija koje se koriste pri vađenju nafte, te vas zanima na koliko ispravnih načina te zagrade možete postaviti oko bušotina, kako bi one bile učinkovite.

Zagrade u naftnom polje predstavljene su kao jednodimenzionalni niz, primjerice[()]{}. Niz zagrada smatra se ispravnim ako zadovoljava sljedeća pravila (prepisano s uputa za korištenje):

1. Prazan niz zagrada je ispravan (iako ne baš pretjerano koristan)

2. Ako su nizovi A i B ispravni, tada je ispravan i niz AB

3. Ako je niz A ispravan, tada je ispravan i niz (i A )i

Na raspolaganju imate N vrsta zagrada, po Ki zagrada svake vrste. Potrebno je pronaći koliko se ispravnih nizova može sastaviti od danih zagrada. Kako broj može biti vrlo velik, ispišite samo njegov ostatak pri dijeljenju s 100 000 007.

NapomeneVrijedit će sljedeća ograničenja na unos:

N ≤ 100, Σ Ki ≤ 1000

22

Page 23: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Igranje sa sumama [2]KONAČNE SUME

Tekst zadatka

Još kao mala djeca u vrtiću s Gaussom, naučili smo da je suma prvih n prirodnih brojeva jednaka n(n+1)/2 . Vjerojatno znamo i da je suma kvadrata jednaka

n(n+1)(2n+1)/6 , no što je s većim potencijama? Intuicija sugerira da je suma prvih n k-tih potencija uvijek polinom stupnja k+1 (što je doista tako), i stoga je se u ovom zadatku traži upravo taj polinom, za unaprijed zadani broj k.

Nekoliko naputaka i sugestija:

1. Polinom će sigurno biti oblika: Pk (n)=ak+1nk +1+ak n

k+...+a1n+a0

2. Polinom m-tog stupnja potpuno je određen sa točno m+1 točkom

3. Bilo bi poželjno znati Gaussov algoritam eliminacije za rješavanje sustava jednadžbi (trebao bi biti obrađen na Matematici 1)

4. Ne morate se mučiti sa prevelikim k-om, dovoljno je da radi za sve k < 10, no opsežnije rješenje

moglo bi zaslužiti i dodatne bodove

23

Page 24: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Drva [2]CATALANOVI BROJEVI

Tekst zadatka

Kratko, no nimalo slatko.

Generiraj sva binarna stabla koja imaju N čvorova, gdje je N prirodan broj u intervalu od 1 do 12.

24

Page 25: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Minecraft [2]ČITANJE S RAZUMIJEVANJEM, BINARNA STABLA

Tekst zadatka

Mirko je strastveni igrač popularne igre Minecraft. Sa svojim je prijateljem Slavkom odlučio napraviti mali Minecraft server na kojemu samo njih dvojica mogu zajedno igrati. Kako igraju Survival mode odlučili su se podijeliti poslove. Dogovorili su se da će Mirko postati rudar, a da će Slavko postati poljoprivrednik.

Iskusni rudar Mirko zna da samo u rudnicima može naći najkvalitetnije i najdragocjenije materijale za izradu građevina te oštrih i dugotrajnih mačeva. Međutim, Mirko je primjetio nešto jako neobično u rudnicima koje nalazi u svijetu u kojem igraju njih dvoje.

Mirko zna da se svaki rudnik sastoji od samo jednog ulaza i da je taj ulaz ujedno iizlaz iz rudnika. Isto tako, Mirko zna da se inače svaka staza u rudniku u bilo kojem trenutku može razgranati na više staza ili da staza može postati u nekom trenutku slijepa staza (takva staza se nije razgranala niti na jednu stazu i Mirko više ne može njome rudariti - mora se vratiti nazad ako želi izaći iz nje). Kako bi se lakše orijentirao u rudniku, Mirko je mjesto na kojemu se jedna staza razgranana 0 ili više staza nazvao postaja. Dakle postaja je sljedeće:

1. Ulaz u rudnik

2. Mjesto na kojemu se neka staza razgrana na 2 ili više staza. Tada Mirko bira u koju će stazu skrenuti.

3. Mjesto na kojemu se neka staza razgrana na 1 stazu. To se dogodi kada neka staza naglo zakrene svoju putanju u lijevu ili desnu stranu.

4. Mjesto na kojemu Mirko shvati da je neka staza postala slijepa staza

25

Page 26: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Međutim, Mirko je primjetio da se u ovom Minecraft svijetu staza nikada ne razgrana na više od 2 staze, te da postoji jedinstven put između svake dvije postaje.

Kako Mirko posjećuje jako puno rudnika svaki dan, odlučio se da će svakom rudniku pridijeliti ime, koje će objesiti na ulaz u rudnik. No prije nego li da ime svom rudniku, mora označiti postaje u njemu. Osmislio je poseban algoritam za dodjelu oznaka svakoj postaji. Algoritam je sljedeći:

funkcija oznaci(postaja):

oznaci(zapadno od postaje)

oznaci postaju na kojoj jesi sa N i povecaj N za 1;// N je na pocetku 1.

oznaci(istocno od postaje)

To je algoritam koji je Mirko osmislio za označavanje postaja. Nakon što je označio postaje u rudniku, Mirko izlazi iz rudnika i tek sada ide dodjeliti ime ovom rudniku. I za to je osmislio sličan algoritam:

funkcija zapisi(postaja):

zapisi na papir broj postaje na kojoj se nalazis;

zapisi(zapadno od postaje);

zapisi(istocno od postaje);

Mirko zna da sa ova dva algoritma može dati jedinstvena imena rudnicima, zato jer niti jedna dva rudnika u svijetu nisu ista.

Dakle, svaki rudnik nosi ime sljedećeg oblika: p0, p1, p2, p3, ..., pn gdje je pi oznaka i-te postaje koju je Mirko posjetio koristivši drugi algoritam, a N je broj postaja u rudniku.

Slavko, poznati šaljivđija, je odlučio Mirku na ulazu u neke rudnike promjeniti imetako da promjeni redosljed nekih brojeva. Ali, Slavko je jako nepažljiv i uvijek ime promjeni u neko ime koje je nemoguće da Mirko dobije za bilo koji rudnik u

26

Page 27: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

svijetu.

Mirko je primjetio da mu Slavko nešto mulja iza leđa i odlučio je provjeriti sva imena rudnika koja je do sada imenovao. S obzirom na to da Mirko nema vremena ponovo ulaziti u svaki rudnik i zapisivati na papir brojeve kako je to radio u algoritmu dva, on traži vašu pomoć da mu pomognete razotkriti je li ime koje stoji na ulazu u rudnik moguće ime koje je Mirko dao. Odnosno, da li je ime rudnika ispravno.

Primjeri

> 7> 5 2 1 3 4 7 6

< DA

> 8> 5 6 7 1 8 2 3 4

< NE

NapomenaVrijedit će da je 1 ≤ n ≤ 106

27

Page 28: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Leonardove sume [2]FIBONACCIJEVI BROJEVI

Tekst zadatka

Neka su Fibonaccijevi brojevi dani s:

F(1) = 1,

F(2) = 2,

F(n) = F(n-1) + F(n+2).

Martin, inače vrstan matematičar, bio je dobar Leonardov prijatelj. Sreću je pronalazio u igranju s Leonardovim brojevima. Jednog nesretnog jutra, uočio je 2 skupa različitih Fibonaccijevih brojeva {a} i {b} te odmah je izračunao ∑ak i ∑bk. Za sumu članova oba reda dobio je isti broj. Upitao se koliko postoji različitih rastava proizvoljnog broja n na sumu različitih Fibonnacijevih brojeva.

Za 16, postoji 4 rastava. 16 = 3 + 13 = 1 + 2 + 13 = 3 + 5 + 8 = 1 + 2 + 5 + 8.

Kako u 13. st. računala nisu postojala, problem je do danas ostao neriješen. Dakle, za dani n, 1 < n < 1018, izračunajte broj rastava na sumu različitih Fibonaccijevih brojeva broja n.

NapomenaBrute-force rješenjem isto možete zaraditi dio bodova.

28

Page 29: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Dvodimenzionalno polje [1-2-3]REKURZIVNE RELACIJE, BINOMNI KOEFICIJENTI

Tekst zadatka

Mirko se jedne večeri, ni sam ne znajući kako, našao na gornjem lijevom polju naizgled beskonačnog dvodimenzionalnog polja. Prepun pitanja, krenuo ih je postavljati ovećem crncu u dugom kožnom kaputu, koji je iz nekog razloga stajao kraj njega. Jedini odgovor koji je dobio jest:

Sve je ovo san. Jedini način da saznaš pravu istinu jest da izađeš iz dvodimenzionalnog polja, a to je moguće samo pomoću crvene pilule koja se nalazi na polju (n, m). No čuvaj se, neki ljudi će te htjeti spriječiti u potrazi. U okolici se nalazi nekoliko agenata UDBE, svaki na svome polju, kojima ne smiješ proći.

Kako se Mirko, sada uvjeren da sanja, ipak prvo htio što bolje naspavati, a tek potom otkriti istinu, odlučio je dio vremena u snu posvetiti izračunavanju broja načina na koji može doći od svoje trenutne pozicije, (0, 0) do crvene pilule na (n, m), a da ga putem ne ulovi UDBA. Pritom se smije kretati samo desnoi dolje, jer tako uvijek smanjuje udaljenost od cilja.

Dane su dimenzije polja, n i m te broj agenata UDBE k, iza kojeg slijedi k parova (x, y) koje predstavljaju lokacije tih agenata.

Verzije zadatka

1 bod: Dimenzije matrice su do 20, k je 0 ili 1

2 boda: Dimenzije matrice su do 20, 2 ≤ k ≤ 20

3 boda: Dimenzije matrice su do 100 000, 0 ≤ k ≤ 20

29

Page 30: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Naputci i sugestije• Zamislimo takvu matricu. Na polje A[ i, j ] može se doći iz polja iznad (A[ i-1, j ]), ili iz polja lijevo

(A[ i,j-1]). To se može zapisati kao dvodimenzionalna rekurzija, koju se može lako izračunati.

• U 1. varijanti, rješenje možda neće stati u tip podataka int, no u long long sigurno hoće

• U 3. varijanti, rješenje će biti vrlo veliko, pa je potrebno izračunati samo ostatak rješenja pri

cjelobrojnom dijeljenju s 100 000 007

◦ U rješenju će najvjerojatnije biti potrebno izračunati (nk )(mod p) . To se može napraviti

korištenjem multiplikativnog inverza, ili Lucasovog teorema. (Wikipedia is your friend)

30

Page 31: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Razmještaji [1-2-3]RAZMJEŠTANJA

Tekst zadatka

Zadatak ima 3 dijela:

1. Ispiši sva razmještanja za skup od prvih n prirodnih brojeva.

2. Ispiši i-to razmještanje u leksikografskom poretku. Da bi rješenje bilo priznato, treba pronaći izravnu konstrukciju traženog razmještanja (što isključuje generiranje svih razmještanja i odabir i-tog ).

3. Odredi duljinu najdužeg mogućeg niza razmještanja za početni skup od n prirodnih brojeva koji poštuje pravilo da su dva uzastopna elementa tog niza također međusobno razmještaji (odnosno, dva uzastopna elementa međusobno nemaju nijednu fiksnu točku), te se nijedan razmještaj u nizu ne pojavljuje više puta.

Primjer za n = 3:

[2, 3, 1] i [3, 1, 2] su razmještanja niza [1, 2, 3], a ujedno su i razmještaji jedan drugoga (ni na jednoj poziciji se ne nalaze isti elementi), pa ih je moguće nanizati u niz duljine 2, što je i najduži mogući takav niz.

Napomena:Postoji mogućnost da je 3. podzadatak NP-težak (ukoliko to uspijete dokazati, zaslužit ćete dodatne bodove). U tom slučaju možete isprobati i različite algoritme koji daju približno najbolje rješenje.

31

Page 32: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Projekt [1-2-3]AD-HOC

Tekst zadatka

U nizu znamenaka 1 2 3 4 5 6 7 8 9 treba postaviti znakove dopuštenih operacija tako da rezultat bude jednak danom broju N, gdje je N zadani prirodni broj.

Nivo 1.

Dopuštena je uporaba samo četiriju osnovnih operacija: množenje, zbrajanje, oduzimanje, dijeljenje, spajanje. Prioritet operacija se čuva (spjanje je najvećeg prioriteta, množenje i dijeljenje obavlja se prije zbrajanja i oduzimanja), a operacije istog ranga izvršavaju se slijeva nadesno.

Nivo 2.

Dopuštena je uporaba zagrada s time da ekvivalentne izraze treba brojati samo jednom (npr. Izraz ( 2 + 3•4 ) i izraz ( 2 + ( 3•4 ) ) su ekvivalentni).

Nivo 3.

Dopuštena je uporaba potenciranja i zapisa broja u drugoj bazi.

Napomena:Moguće je da profesor neke od razina definira drugačije.

Za sve detaljnje informacije pogledati knjižicu 5. Catalanovi brojevi.

32

Page 33: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

Nemogući bijeg [3]AD-HOC

Vi i vaš najbolji prijatelj Neven ste oteti i zatvoreni u ćeliju. Tamničar vam je za slobodu ponudio izazov. Pravila izazova su sljedeća:

1. Tamničar vas odvodi u privatnu ćeliju, dok Neven čeka ispred ćelije i nema pojma što se unutra događa. U toj čeliji se nalazi standardna šahovska ploča i staklenka s 64 novčića.

2. Tamničar iz staklenke izvlači (jednog po jednog) novčiće i postavlja ih na šahovsku ploču. Svaki novčić postavlja na zasebno polje na šahovnici. Tamničar postavlja novčiće na šahovnicu onako kako on želi, a vi mu nikako ne smijete sugerirati kako da on postavlja novčiće na šahovnicu. Dakle, svaka od 264 kombinacija novčića ima iste šanse da se pojavi šahovskoj ploči.

3. Nakon što je postavio novčiće na ploču, tamničar će vam pokazati koje polje je on izabrao kao magično polje. To je polje ključ vaše slobode.

4. Nakon što vam je pokazao magično polje, tamničar vam dozvoljava da okrenete točno jedan od 64 novčića na šahovnici. Dakle, ako npr. odaberete novčić kojemu je vidljiva strana glava, onda se taj novčić okreće tako da mu je sada vidljiva strana pismo. Dužni ste iskoristiti mogućnost okretanja jednog novčića.

5. Sada, nakon što ste odabrali novčić koji želite okrenuti, izlazite iz privatne ćelije, a u nju sada ulazi Neven. Ne smijete nikako pokušati Nevenu prenijeti neku poruku tijekom izlaska iz ćelije jer vas u protivnom obojicu čeka trenutna smrt.

6. Vaš najbolji prijatelj Neven sada smije pogledati (samo pogledati, ne smije ništa dirati) šahovnicu i raspored novčića na njoj, te pokazati tamničaru magično polje koje je tamničar izabrao. Ako je Neven pokazao na dobro polje,

33

Page 34: prvi ciklus [164,35 KiB]

Diskontna matematika 1: Laboratorijske vježbe

tamničar vas oboje pušta na slobodu. U suprotnom ste obojica mrtvi.

Tamničar vam je objasnio pravila i prije nego li vas uvede u privatnu ćeliju dozvoljava vam da se s Nevenom dogovorite koju ćete strategiju okretanja novčića upotrijebiti. Koja je vaša strategija bijega?

NapomenaOvaj zadatak nije programerski, već logički. Kao njegovo rješenje traži se da pronađete strategiju koja vam omogućava preživljavanje, ili da dokažete kako takva ne postoji.

34