tz
Jocul TZIANSITZI, ceea ce in traducere inseamna "alegerea pietrelor", este un joc popular din China. Doi jucatori extrag alternativ pietre din doua gramezi. La fiecare miscare un jucator poate extrage acelasi numar de pietre din ambele gramezi sau un numar oarecare de pietre din una dintre gramezi. Castiga jucatorul care ia si ultima piatra.
Cerinta
Se cere sa testati daca, pentru o configuratie data, primul jucator are sau nu strategie de castig si daca da sa programati mutarile primului jucator, mutarile celui de al doilea jucator fiind citite de la tastatura.
Date de intrare
Programul nu citeste date din nici un fisier.
Date de iesire
Programul nu va scrie date in nici un fisier.
Interactiune
Programul vostru va interactiona
cu un program al comisiei care ruleaza în paralel. În cadrul unui
set de test (test-case), programul vostru va trebui sa dea raspunsul corect
pentru mai multe teste. Pentru fiecare test din set, interactiunea are urmatorul
format:
1. Programul vostru citeste o linie de la intrarea standard, care contine doua
numere naturale n m separate
printr-un spatiu (n
este numarul de pietre din prima gramada, m
este numarul de pietre din a doua gramada pentru testul respectiv). Daca n
si m sunt nule, inseamna ca setul
de test s-a terminat.
2. Apoi, programul
vostru va determina daca primul jucator are sau nu strategie sigura de castig.
In caz afirmativ, va scrie o linie ce contine doar valoarea 1.
In caz contrar (deci daca primul jucator nu are strategie sigura de castig)
se va scrie o linie ce contine doar valoarea 0
(zero) si apoi o linie linie care contine cuvantul DONE.
3. Daca primul jucator
are strategie sigura de castig, programul vostru va efectua un numar de runde.
O runda consta din scrierea unei linii la iesirea standard, care descrie operatia
efectuata de primul jucator în runda respectiva. O operatie este descrisa
prin numarul gramezii din care jucatorul extrage pietre (1
pentru prima gramada, 2 pentru
cea de a doua, respectiv 3 pentru
ambele gramezi), urmat de un spatiu, apoi de un numar natural nenul care reprezinta
numarul de pietre extrase. Apoi, se va citi o linie de intrarea standard care
descrie operatia efectuata de al doilea jucator (operatia fiind specificata
in acelasi mod). Când programul vostru a executat ultima mutare, afiseaza
o linie speciala, continand numai cuvantul DONE
Punctaj
Programul vostru va primi
punctajul corespunzator setului de teste curent daca si numai daca a rezolvat
corect toate testele continute in setul respectiv.
Programul vostru primeste 0 puncte
pe un anumit test in urmatoarele situatii :
- afiseaza in cadrul unei runde o operatie ce nu poate fi executata la momentul
respectiv;
- afiseaza ca primul jucator are strategie sigura de castig atunci cand nu are
(sau invers);
- atunci cand primul jucator are strategie sigura de castig, programul vostru
nu castiga;
- formatul de afisare impus in problema nu este respectat.
Instructiuni de programare
Programatorii în C/C++ trebuie sa execute flush dupa ce au terminat de scris o linie completa la iesire. Acest lucru este valabil si pentru linia continând DONE
În cazul programelor
scrise în C++ si utilizarea iostreams, se va folosi urmatoarea secventa
pentru citirea de la intrarea standard si scrierea la iesirea standard:
cin>>x;
cout<<op<<'\n'<<flush;
În cazul programelor
în C sau C++ si utilizarea scanf
si printf, se va folosi urmatoarea
secventa pentru citirea de la intrarea standard si scrierea la iesirea standard:
scanf ("%d", &x);
printf("%d\n",op); fflush (stdout);
În cazul programelor
în Pascal se va folosi urmatoarea secventa pentru citire de la intrarea
standard se utilizeaza readln,
iar pentru afisarea unei linii se utilizeaza writeln
:
readln(x);
writeln(op);
Restrictii si precizari
1
<= n <= 1016
Intr-un set de teste sunt cel mult 7
teste.
Exemplu de interactiune
Operatie | Semnificatie |
Citeste 1 2 |
n=1, m=2 |
Timp maxim de executie/test:
0.1 secunde
prof. Emanuela Cerchez
Liceul de Informatica "Grigore Moisil" Iasi
Contact:emanuela.cerchez@gmail.com