Detalii evaluare #58781319

Rezumat problemă

#1223

Pentru obținerea Pietrei Filosofale, un alchimist a preparat un elixir folosind un creuzet de capacitate C, în care a turnat picături de metal topit, într-o ordine bine stabilită, în N etape. Numărul de picături turnate într-o etapă este cuprins între 0 și C-1, iar procesul începe când în creuzet s-a turnat prima picătură (în prima etapă numărul de picături turnate este nenul). Picăturile se adună în creuzet una câte una şi, de fiecare dată când acesta se umple complet, alchimistul rosteşte o formulă magică, provocând transformarea întregului conţinut într-o singură picătură, apoi continuă procesul. O rețetă de obținere a elixirului se exprimă printr-un șir de N numere, reprezentând numărul de picături turnate în cele N etape.

De exemplu, aplicând rețeta 5 6 1 0, cu un creuzet de capacitate C=7, în cele N=4 etape procesul este:

  • etapa 1: se toarnă 5 picături;
  • etapa a 2-a: se toarnă 6 picături, astfel: după primele 2 picături se umple creuzetul (5+2=7) și deci se rosteşte formula magică, în creuzet rămânând o picătură; se continuă cu celelalte 4 picături; la finalul etapei în creuzet sunt 5 picături (1+4=5);
  • etapa a 3-a: se toarnă o picătură; la finalul etapei în creuzet sunt 6 picături (5+1=6);
  • etapa a 4-a: se toarnă 0 picături; după ultima etapă creuzetul conține 6 picături (6+0=6).

O rețetă care corespunde Pietrei Filosofale trebuie să conducă, la finalul aplicării ei, la obținerea unei singure picături, chintesența metalelor amestecate. Bineînțeles, sunt mai multe astfel de rețete.

Fiind un tip responsabil, alchimistul a lăsat posterității un set de tratate, care cuprind toate aceste rețete. El a scris pe fiecare pagină câte o rețetă, astfel încât niciuna să nu se repete în cadrul întregii lucrări. Pe vremea aceea erau meșteri pricepuți, care fabricau tratate de dimensiuni corespunzătoare, încât fiecare pagină să poată cuprinde o rețetă ca a noastră, oricât de lungă ar fi ea. Fiecare tratat are P pagini și doar după ce completează toate cele P pagini ale unui tratat, alchimistul începe un nou tratat.

Se cere numărul de rețete publicate în ultimul tratat.

ONI GIM 2015, Clasa a VIII-a
Fișiere Candale Silviu (silviu) Livia Toca concurs

Detalii

Problema Magic1 Operații I/O magic1.in/magic1.out
Limita timp 0.1 secunde Limita memorie Total: 4 MB / Stivă 4 MB
Id soluție #58781319 Utilizator Mihai Sandulescu (mihaisan)
Fișier magic1.c Dimensiune 878 B
Data încărcării 07 August 2025, 10:36 Scor/rezultat Eroare de compilare

Evaluare

Mesaj compilare

magic1.c:3:1: error: stray '\304' in program
 long long power(long long bază, long long exponent, long long modul) {

 ^
magic1.c:3:1: error: stray '\203' in program
magic1.c: In function 'power':
magic1.c:5:5: error: stray '\304' in program
     bază %= modul;

     ^
magic1.c:5:5: error: stray '\203' in program
magic1.c:8:13: error: stray '\304' in program
             rezultat = (rezultat * bază) % modul;

             ^
magic1.c:8:13: error: stray '\203' in program
magic1.c:11:9: error: stray '\304' in program
         bază = (bază * bază) % modul;

         ^
magic1.c:11:9: error: stray '\203' in program
magic1.c:11:9: error: stray '\304' in program
magic1.c:11:9: error: stray '\203' in program
magic1.c:11:9: error: stray '\304' in program
magic1.c:11:9: error: stray '\203' in program
magic1.c: In function 'main':
magic1.c:25:5: error: stray '\310' in program
     long long rețete_in_ultimul_tratat = power(C, N - 1, P);

     ^
magic1.c:25:5: error: stray '\233' in program
magic1.c:25:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ete_in_ultimul_tratat'
     long long rețete_in_ultimul_tratat = power(C, N - 1, P);

                   ^
magic1.c:25:19: error: 'ete_in_ultimul_tratat' undeclared (first use in this function)
magic1.c:25:19: note: each undeclared identifier is reported only once for each function it appears in
magic1.c:27:5: error: stray '\310' in program
     if (rețete_in_ultimul_tratat == 0) {

     ^
magic1.c:27:5: error: stray '\233' in program
magic1.c:27:9: error: 're' undeclared (first use in this function)
     if (rețete_in_ultimul_tratat == 0) {

         ^
magic1.c:27:13: error: expected ')' before 'ete_in_ultimul_tratat'
     if (rețete_in_ultimul_tratat == 0) {

             ^
magic1.c:30:9: error: stray '\310' in program
         fprintf(fisier_out, "%lld\n", rețete_in_ultimul_tratat);

         ^
magic1.c:30:9: error: stray '\233' in program
magic1.c:30:43: error: expected ')' before 'ete_in_ultimul_tratat'
         fprintf(fisier_out, "%lld\n", rețete_in_ultimul_tratat);

                                           ^
magic1.c:23:11: warning: ignoring return value of 'fscanf', declared with attribute warn_unused_result [-Wunused-result]
     fscanf(fisier_in, "%lld %lld %lld", &C, &N, &P);

           ^

Cum funcționează evaluarea?

www.pbinfo.ro permite evaluarea a două tipuri de probleme:

  • probleme la care rezolvarea presupune scrierea unui program complet
  • probleme la care rezolvarea presupune scrierea unei secvențe de program - câteva instrucțiuni, o listă de declarații, una sau mai multe funcții, etc.

Problema Magic1 face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:

  • Programul sursă este compilat folosind compilatorul corespunzător. Dacă în urma compilării se obțin erori sau avertismente, acestea sunt afișate în această pagină.
  • Dacă programul a fost compilat, executabilul obținut va fi rulat, furnizându-i-se unul sau mai multe seturi de date de intrare, în concordanță cu restricțiile specifice problemei. Pentru fiecare set de date se obține un anumit punctaj, în raport cu corectitudinea soluției tale.

Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.

Du-te sus!