Eszköztár
71 Kezdőlap - Webszerkesztés - JavaScript - Kókuszdió
ujdomainek.hu

Kókuszdió

Mennyit gyűjtöttek?

Feladat

Készítsen programot a következő probléma megoldására!

Öt hajótörött ért partra egy lakatlan szigeten. Nagyon éhesek voltak, ezért úgy határoztak, hogy kókuszdiót gyűjtenek a környező pálmákról. A gyűjtés nagyon eredményes volt, rengeteg diót sikerült több kupacba összehordaniuk. De nagyon el is fáradtak a munkában, így hát lefeküdtek a fehér homokba, a pálmák árnyékában, hogy kialudják magukat.

Kis idő múlva az egyikük felébredt, és így gondolkodott: míg a többiek alszanak, én szétoszthatnám a kókuszokat, így amikor majd felébrednek, csak enniük kellene. Eszerint is cselekedett. Öt egyenlő kupacra osztotta a diókat, de egy kimaradt, amit feldobott az egyik majomnak a legközelebbi fára. Ezek után a saját kupacát elásta. Mikor végzett, a társai még mélyen aludtak, így hát ő is folytatta az alvást.

Rövidesen egy másik hajótörött is felébredt, és pontosan úgy gondolkodott, mint az elsőként ébredő társa. Egyesítette a négy kupacot, majd öt egyenlő részre osztotta a diókat. De egy neki is kimaradt, ezért azt feldobta a majomnak a fára. Ő is elásta a saját részét, majd lefeküdt aludni.

Rövid időn belül a maradék három ember is sorban felébredt, és az előző két hajótörötthöz hasonlóan mindegyikük felosztotta öt részre az addig el nem ásott diókat, és a saját részüket elásták. Mindegyiküknél pontosan egy dió maradt ki, így végül a majom öt kókuszt kapott.

Másnap reggel, mikor mindannyian felébredtek és tele voltak energiával, anélkül, hogy tudták volna, hogy a többiek is ugyanúgy cselekedtek, míg ők aludtak, szétosztották a még meglévő kókuszdiókat öt egyenlő részre. Ekkor a majomnak már nem jutott.

Vajon hány kókuszdiót szedhettek összesen?
előző oldal random oldal következő oldal


Eddig 5 hozzászólás van a témához:

2018-12-10 13:35 Balogi Alex és Horváth Marcell Szépen Köszönöm.

2018-12-12 09:00 Czehmeiszter Mihály Fúj

2018-12-12 09:02 Pollák Bertalan Robinson Crusoe

2021-10-09 15:03 Janika Valaki tudja a megoldást?:)

2022-01-10 00:25 B.Zsolt Ezt a feladatot meg lehet oldani programozás nélkül, egy számológép és toll + papír segítségével is; csak úgy azért jóval nehezebb és tovább tart: ismerni kell hozzá a 2-ismeretlenes, lineáris diofantoszi egyenletek megoldását euklideszi algoritmus segítségével. Bár én most ezt csináltam, mert nem voltam számítógép közelben, a mobilomon viszont van számológép app. :). Persze az ilyesfajta megoldása is leprogramozható lenne, de van sokkal egyszerűbb kódolható eljárás is hozzá, szimplán növekvő egész számok próbálgatásával, azt vizsgálva, hogy a további műveletek után is egész szám lesz-e az eredményünk. Mivel 4 részszámítás képlete (egyenlete) is megegyezik (a változótól eltekintve), legalább ezt mindenképp érdemes egy külön függvénybe kiszervezni. És viszafelé, hátulról elindulva kicsit gyorsabban megoldható.
Annyit tennék hozzá, hogy ezzel a szövegezéssel nem reális a kapott eredmény (a legkisebb megoldás is), kivitelezhetetlen a történet, mivel az 1.hajótöröttnek mindenképp több, mint 500 kókuszdiót kellene éjszaka, csendben, puszta kézzel elásnia. Én mindenképp átírnám valamilyen jóval kisebb, de strapabíró, héjas, nehezen koszolódó, tartós (sokáig elálló) termésre, pl. mogyoróra vagy még inkább dióra.

A papíron való kiszámításhoz azért adnék minimális segítséget. Remélem, hogy ezért nem haragszik meg az oldal tulajdonosa; de vigyázok, még a megoldandó diofantoszi egyenletet sem fogom megadni!
1) Egyesével fel kell írni mind a 6 tevékenységhez tartozó egyenletet (képletet), majd célszerű hátulról visszafelé haladva, mindig behelyettesíteni az utolsó, közös szétosztáskor egy főre jutó mennyiséget (pl. x) az előző egyenletbe, és végül a kiinduló, első egyenletbe helyettesítve, meg fogjuk kapni a kiinduló mennyiségünket, vagyis a másik ismeretlenünket (pl. y) x-xel kifejezve (de lehet y-ból indulva is behelyettesítgetni, aminek a végén x-t fogjuk megkapni), amiből átalakítással egy c = b*y - a*x alakú diofantoszi egyenlethez fogunk jutni, ahol a, b, c E+ konstansok. Annyit még segítek, hogy: c,b = 0 mod 4 lesz, azaz 4 | b,c , de a mod 4 > 0 => 4 | x --> c/4 = b/4*y - a*x0 => meg kell oldani az alábbi diof. egy.-et az eukl.-i algor.-sal: 1 = b/4*y - a*x0 , ahol x0 = x/4 --> x,y --> 4 = b*y - a*x --> *c/4 --> c = b*(y*c/4) - a*(x*c/4) = b*y1 - a*x1 , ahol: y1 = y*c/4 +- a*k és x1 = x*c/4 +- b*k . És olyan k-t kell választanunk, hogy x1 a legkisebb E+ legyen. Nyilván több megoldáspár van, de mi most csak a legkisebbet keressük.





Új hozzászólás:
E-mail cím:


Erre a címre küldjük ki a hozzászólás jóvá- hagyásához szükséges linket. Az e-mail címet sehol nem tesszük közzé.

Név:


Ez a név fog megjelenni az Ön hozzászólásai mellett.

Mennyi tizenkettő + négy?
Számjegyekkel írja be!



Ez a robotok beírása elleni védelem miatt szükséges ellenőrzés.


© infojegyzet.hu, 1999. október