Detalii evaluare #64004735

Rezumat problemă

#4655

Andra are un pachet cu n tipuri de buline de ciocolată, cu câte c[i] buline de fiecare tip i. Andra dorește să utilizeze toate bulinele pentru a construi piramide, fiecare fiind formată din unul sau mai multe rânduri, numerotate începând de la 1. Pentru fiecare piramidă în parte, pe rândul i, se află 2i-1 buline. Spre exemplu, pe rândul 8 al unei piramide, se află 27 = 128 de buline de ciocolată. Pe fiecare rând al unei piramide se află unul sau mai multe tipuri de buline, iar același tip de buline se poate folosi pe oricâte rânduri. Dintre piramidele care se pot forma, cele serioase conțin pe fiecare rând doar un tip de buline. Folosind toate bulinele, ajutați-o pe Andra să determine:

1) Numărul minim de piramide de ciocolată pe care le poate forma.
2) Numărul minim de piramide serioase de ciocolată pe care le poate forma, astfel încât toate cele obținute să fie de acest fel.

ONI 2024, clasa a 8-a
Fișiere Pracsiu Dan (dnprx) Mircea Măierean concurs

Detalii

Problema mandms Operații I/O mandms.in/mandms.out
Limita timp 0.5 secunde Limita memorie Total: 64 MB / Stivă 8 MB
Id soluție #64004735 Utilizator Peter Tobias (PeterTobias)
Fișier mandms.cpp Dimensiune 3.54 KB
Data încărcării 03 Aprilie 2026, 22:28 Scor/rezultat Eroare de compilare

Evaluare

Mesaj compilare

mandms.cpp:44:26: error: expected ',' or '...' before '__int128'
 void print_u128(unsigned __int128 n, FILE* fout) {

                          ^
mandms.cpp: In function 'void print_u128(unsigned int)':
mandms.cpp:45:9: error: 'n' was not declared in this scope
     if (n == 0) {

         ^
mandms.cpp:46:17: error: 'fout' was not declared in this scope
         fprintf(fout, "0\n");

                 ^
mandms.cpp:51:12: error: 'n' was not declared in this scope
     while (n > 0) {

            ^
mandms.cpp:56:23: error: 'fout' was not declared in this scope
         fputc(buf[i], fout);

                       ^
mandms.cpp:58:17: error: 'fout' was not declared in this scope
     fputc('\n', fout);

                 ^
mandms.cpp: In function 'int main()':
mandms.cpp:75:14: error: expected unqualified-id before '__int128'
     unsigned __int128 cnt[65] = {0};

              ^
mandms.cpp:76:14: error: expected unqualified-id before '__int128'
     unsigned __int128 total_sum = 0;

              ^
mandms.cpp:85:17: error: 'cnt' was not declared in this scope
                 cnt[bit]++;

                 ^
mandms.cpp:89:13: error: 'total_sum' was not declared in this scope
             total_sum += current_c;

             ^
mandms.cpp:93:22: error: expected unqualified-id before '__int128'
             unsigned __int128 next_c = current_c;

                      ^
mandms.cpp:94:13: error: 'next_c' was not declared in this scope
             next_c = (next_c * y) % t + z;

             ^
mandms.cpp:100:18: error: expected unqualified-id before '__int128'
         unsigned __int128 S = total_sum;

                  ^
mandms.cpp:101:18: error: expected unqualified-id before '__int128'
         unsigned __int128 k = 1;

                  ^
mandms.cpp:102:14: error: 'S' was not declared in this scope
         if ((S % 2) == 0) k = 2; // k must have the same parity as S because 2^R limits

              ^
mandms.cpp:102:27: error: 'k' was not declared in this scope
         if ((S % 2) == 0) k = 2; // k must have the same parity as S because 2^R limits

                           ^
mandms.cpp:105:22: error: expected unqualified-id before '__int128'
             unsigned __int128 val = S + k;

                      ^
mandms.cpp:107:22: error: expected unqualified-id before '__int128'
             unsigned __int128 temp = val;

                      ^
mandms.cpp:108:20: error: 'temp' was not declared in this scope
             while (temp > 0) {

                    ^
mandms.cpp:112:25: error: 'k' was not declared in this scope
             if (bits <= k) break;

                         ^
mandms.cpp:113:13: error: 'k' was not declared in this scope
             k += 2;

             ^
mandms.cpp:115:20: error: 'k' was not declared in this scope
         print_u128(k, fout);

                    ^
mandms.cpp:117:18: error: expected unqualified-id before '__int128'
         unsigned __int128 A[65] = {0};

                  ^
mandms.cpp:119:13: error: 'A' was not declared in this scope
             A[i] = cnt[i];

             ^
mandms.cpp:119:20: error: 'cnt' was not declared in this scope
             A[i] = cnt[i];

                    ^
mandms.cpp:126:21: error: 'A' was not declared in this scope
                 if (A[i] < A[i+1]) {

                     ^
mandms.cpp:127:30: error: expected unqualified-id before '__int128'
                     unsigned __int128 diff = A[i+1] - A[i];

                              ^
mandms.cpp:128:30: error: expected unqualified-id before '__int128'
                     unsigned __int128 shift = (diff + 2) / 3;

                              ^
mandms.cpp:129:31: error: 'shift' was not declared in this scope
                     A[i+1] -= shift;

                               ^
mandms.cpp:135:20: error: 'A' was not declared in this scope
         print_u128(A[0], fout);

                    ^

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 mandms 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!