Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

C# programozás

475
Szöveges feladat: A király amnesztiát hirdet, és elenged valamennyi rabot. A börtönben 365 cella van minden cellában 1 rab, az ajtók zárva. A király parancsa: -Minden egyes ajtót nyissatok ki, ezután minden 2. ajtó állapotát változtassátok meg (azaz amelyik nyitva volt azt zárd be, amelyik zárva volt nyisd ki. ezután minden 3. ajtót, majd minden 4. ajtót és így tovább.... (5. 6. 7. stb. ....) végül minden 365. ajtó állapotát változtasd meg. Hány rab lesz szabad?
Jelenleg 1 felhasználó nézi ezt a kérdést.
c#, programozás
0
Középiskola / Informatika

Válaszok

1
Azok a rabok lesznek szabadok, akinek az ajtajának az állapotát páratlanszor változtatták meg. Vagyis az olyan sorszámú cellák lesznek nyitva, amiknek páratlan darab osztójuk van: ezek a négyzetszámok. 1-től 365-ig `[sqrt(365)]=19` darab négyzetszám van, ennyi rab lesz szabad.

Ha mindenképp programozottan szeretnéd megoldani, akkor vegyél fel egy 365 elemű bool tömböt, jelentse true érték azt, hogy nyitva van az ajtó. Inicializáld a tömböt csupa false értékkel, majd játszd le a feladatot. Egy külső ciklus válassza ki, hogy éppen melyik ajtókat invertáljuk, a belső ciklusban pedig ekkora lépésközzel menj végig a tömbön és invertáld az értékeket. A végén számold össze, hogy hány true érték van.

C# fordítóhoz most épp nincs hozzáférésem, itt egy megoldás C-ben: https://pastebin.com/EvP4uGsP
0