Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2023-03-24 11:39:15.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:monede3.in, monede3.outSursăad-hoc
AutorCiprian OprisaAdăugată decypryCiprian Oprisa cypry
Timp execuţie pe test0.5 secLimită de memorie131072 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Inversarea interactivă a monedelor

Gigel a ieşit cu bine din supermarket dar a uitat să scaneze la ieşire o ciocolată. Paznicul îl observă, dar îl va lăsa să plece dacă trece de provocarea de mai jos.

Gigel va fi legat la ochi, iar paznicul pune 4 monede pe colţurile unui pătrat din carton, fiecare având o poziţie aleatoare (cap - 0 sau pajură - 1). Scopul lui Gigel este ca toate cele patru monede să ajungă cu aceeaşi faţă în sus (toate cap sau toate pajură). Provocarea are cel mult 9 runde, în fiecare rundă se efectuează paşii de mai jos, în această ordine:

  • paznicul roteşte pătratul de carton (împreună cu monedele de pe colţuri) cu un unghi ales aleator dintre 0°, 90°, 180° şi 270°
  • Gigel îi cere paznicului să inverseze între una şi patru monede, specificând colţurile mesei corespunzătoare monedelor pe care doreşte să le inverseze (notate cu A, B, C şi D)
  • paznicul îi spune lui Gigel dacă după inversarea monedelor, scopul a fost atins (toate monedele au aceeaşi faţă); daca da, provocarea se termină şi Gigel a câştigat; dacă nu, se trece la runda următoare

Dacă la finalul a 9 runde Gigel încă nu a câştigat, provocarea se termină, iar Gigel pierde.

În partea stângă a figurii de mai jos este reprezentată masa paznicului la începutul unei runde. Paznicul decide aleator să rotească pătratul de carton cu 90°, rezultatul fiind reprezentat în partea dreaptă a figurii. Observaţi că doar monedele îşi schimbă poziţia (moneda cu faţa 1 mutându-se de pe poziţia B pe poziţia C), în timp ce colţurile mesei rămân fixe. Dacă în această rundă Gigel spune C, toate monedele vor avea faţa 0 şi Gigel câştigă. La fel, dacă Gigel spune ABD, toate monedele vor avea faţa 1 şi câştigă deasemenea.

Interacţiune

Aceasta este o problemă interactivă. În loc să citiţi datele dintr-un fişier de intrare şi să afişaţi rezultatul într-un fişier de ieşire, veţi interacţiona cu evaluatorul citind de la standard input (de exemplu folosind scanf sau cin în C/C++) şi afişând în standard output (de exemplu folosind printf sau cout în C/C++).

Programul vostru va începe citind numărul de provocări la care participă Gigel. Pentru a ne asigura că metoda aleasă de voi rezolvă orice provocare în cel mult 9 runde, vor avea loc un număr de cel mult 100 de provocări. Imediat ce numărul de provocări a fost citit, va începe prima rundă a primei provocări.

La fiecare rundă, programul vostru trebuie să afişeze un o linie (terminată cu '\n'), corespunzând poziţiilor monedelor pe care vrea să le inverseze. Caracterele afişate trebuie să fie distincte şi pot avea doar valorile 'A', 'B', 'C' sau 'D'. După ce se afişează această linie, va trebui să citiţi rezultatul acţiunii voastre, exprimat printr-un număr întreg, ce poate avea valorile următoare:

  • -1: linia dată de voi este greşită
  • 1: aţi câştigat provocarea (toate monedele au aceeaşi faţă)
  • 0: încă nu aţi câştigat provocarea

În cazul în care aţi câştigat provocarea, va începe imediat următoarea provocare. După ce aţi câştigat şi ultima provocare, programul vostru trebuie să îşi încheie execuţia. Dacă aţi primit răspunsul 0 în toate cele 9 runde ale unei provocări sau aţi primit vreun răspuns -1, programul vostru trebuie să îşi încheie deasemenea execuţia.

Exemplu

monede3.inmonede3.out
This is some
text written on
multiple lines.
This is another
text written on
multiple lines.

Explicaţie

...

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?