Day 1 Task 2: Hideg-meleg

Jack és Jill Hideg-meleg játékot játszik. Jill gondol egy számot 1 és N között, amit Jack megpróbál kitalálni. Jack a kérdésében egy 1 és N közötti számra kérdez rá, amire Jill válasza meleg, hideg vagy azonos. Jack első kérdésére Jill válasza azonos. A többi esetben Jill válasza:

Ird meg Jack HC(N) kérdezését megvalósitó eljárást! Ez a Guess(G) függvényt hivja, ahol G 1 és N közötti szám. Guess(G) visszaadott értéke 1, ha a válasz meleg, -1, ha a válasz hideg, illetve 0,  ha a válasz azonos. A HC(N) függvény visszaadott értéke a Jill által gondolt szám legyen!

Példa

N=5, és Jill a 2-re gondolt. Ha a HC az alábbi  Guess hivásokat végzi, megkapja az eredményt:

Hivás

Visszadott érték

Magyarázat

Guess(5)

0

Azonos (első hivás)

Guess(3)

1

Meleg

Guess(4)

-1

Hideg

Guess(1)

1

Meleg

Guess(3)

0

Azonos

Ekkor Jack tudja, hogy Jill a 2-re gondolt, és a HC a 2-t adja vissza eredményül. Jack itt 5 kérdést tett fel, de a feladat ennél kevessebből is megoldható.

1. részfeladat [25 pont]

HC(N) a Guess(G)-t legfeljebb N-szer hivhatja. A HC(N)-t az értékelő legfeljebb 125250-ször hivja, ahol N 1 és 500 közötti szám.

2. részfeladat [25 pont]

HC(N) a Guess(G)-t legfeljebb 18-szor hivhatja. A HC(N)-t az értékelő legfeljebb 125250-ször hivja, ahol N 1 és 500 közötti szám.

3. részfeladat [25 pont]

HC(N) a Guess(G)-t legfeljebb 16-szor hivhatja. A HC(N)-t az értékelő legfeljebb 125250-ször hivja, ahol N 1 és 500 közötti szám.

4. részfeladat [legfeljebb 25 pont]

Legyen W a legnagyobb olyan egész, amelyre 2W≤3N.  A pontszámok:

Az értékelő legfeljebb 1000000-szor hivja a HC(N)–t, ahol N 1 és 500000000 közötti egész szám.

Megvalósitás