Programozó versenyek

Magas szintű programozási nyelvek 1, gyakorló feladatsor, 2012. március 20.

2012. március 20. 15:00 – 2012. április 21. 0:00

Josephus

Josephus Flavius problémája elég közismert. Azok kedvéért, akik nem ismerik az eredeti problémát: körben álló n ember közül, akiket 1, 2, …, n számokkal jelölünk meg, minden m-ediket kivégzik, és csak az utolsónak megmaradó személy életét kímélik meg. Josephus elég okos volt ahhoz, hogy az utolsónak megmaradó személy helyére álljon, ezért megmenekült, és hírt adhatott nekünk a történtekről. Amikor például n = 6 és m = 5, akkor az emberek az 5, 4, 6, 2, 3 sorrendben fognak meghalni, míg az 1-es megmenekül.

Tegyük fel, hogy van k jó fiú és k rossz fiú. A körben az első k helyen állnak a jó fiúk, az utolsó k helyen a rosszak. Meg kell határoznod azt a minimális m számot, amelyre az összes rossz fiú hamarabb fog meghalni, mint a jó fiúk közül bármelyik.

A bemenet specifikációja

A bemenet k értékeket tartalmazó sorokból áll. A bemenet utolsó sora egy 0-t tartalmaz, ezt a sort már nem kell feldolgoznod. Feltételezheted, hogy 0 < k < 14.

A kimenet specifikációja

A kimenet sorai a bemenet k értékeinek megfelelő m értékeket tartalmazzák.

Példa bemenet

  1. 3
  2. 4
  3. 0
letöltés szöveges állományként

A példa bemenethez tartozó kimenet

  1. 5
  2. 30
letöltés szöveges állományként
Debreceni Egyetem, Informatikai Kar, v. 2019.03.01.