Problem I. 511. (May 2020)
I. 511.
(10 pont)
Deadline expired on June 10, 2020.
Sorry, the solution is available only in Hungarian. Google translation
A program megoldása alapvetően jól sikerült, bár néhány rutinos versenyzőt becsapott. Alapos átolvasás és a szöveg pontos megértése kellett a hibátlan megoldáshoz.
Azok a számok, amelyek nem oszthatók a választott számmal bátran mondahtók bármikor a játék folyamán. Ezenkívül a választott szám oszópárjainak egyike is kimondható. Négyzetszámok esetén a négyzetgyök is mondható, hiszen egyik elhangzott számmal megszorozva sem adja a választott számot. A megoldáshoz tehát a szám osztóit kellett meghatározni, majd ezután a nála nem nagyobb nem osztókat, az osztópárok számát, illetve azt, hogy a szám négyzetszám-e. Egy lehetséges megoldás Python nyelven:
def hanyjo(szam) : jo = 0 for i in range(1,szam+1) : # a számok 1-től szam-ig if szam % i != 0 : jo += 1 # a nem osztók száma, vagyis amik bátran mondhatók nem = szam - jo # a többi szám # a többi szám if nem % 2 == 1 : # ha a szám négyzetszám, akkor a négyzetgyöke szintén jó jo += 1 nem -= 1 return jo + nem // 2 # ennyi számot lehet a játékban mondani szam = int(input()) if hanyjo(szam) % 2 == 0 : print(2) else : print(1)
Statistics:
12 students sent a solution. 10 points: Kaltenecker Balázs Bence, Mócsy Mátyás, Szabó Barbara Noémi, Tóth Lilla Eszter , Ürmössy Dorottya, Vadász Levente, Vörös 314 László. 9 points: Horcsin Bálint. 8 points: 2 students. 6 points: 1 student. 5 points: 1 student.
Problems in Information Technology of KöMaL, May 2020