Hogy kéne megoldani ezt a feladatot? (C# de mindegy a nyelv végülis)
Józsika egy osztálytársával játszik. Van N darab üveggolyójuk egy kupacban. N 1-100000 intervallumban lehet.
Egyik körben Józsika vesz el X darab golyót a kupacból, másik körben az osztálytársa úgy, hogy X csak négyzet szám lehet, tehát 1, 4, 9, 16, 25 stb. Az a játékos nyer, aki az utolsó golyót elveszi.
Ha optimálisan játszanak, megnyerheti-e Józsika a játékot, feltéve, hogy mindig ő kezd?
De hogy ad jó megoldást, ha mindig 1-et veszek el?
Legyen N 15 és 1-ről indítom a számlálót.
15-ről 9-re megyünk le 6 kör alatt, tehát a számláló 7 lesz.
A 7 páratlan, tehát true-t ad ez a logika, pedig false a válasz, mert Józsika nem nyerhet, ha optimálisan játszanak.
Ha 0-ról indítom a számlálót akkor nyilván jó lesz 15-nél, de akkor már 1-nél megbukik a dolog (és 2-nél, 3-nál is pl).
Vagy mit értek rosszul?
Nem kötelező Józsinak nyerni, az a kérdés, hogy optimális játékkal nyerhet-e. Nincs végtelen ciklus, mert legalább 1-et mindig el tud venni valaki.
Nem. Én néztem meg. :).
A lényeg, hogy a feladat megoldhatlan, hogy ha Józsi kezd mindig nyerjen. Lásd az 5-ös számot: Józsi 1 vagy 4-et vehet el, bármelyiket is teszi négyzetszám marad csak amit a másik elvesz és nyert.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!