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.