#1044
Fascinat de Egiptul Antic, Rareș vrea să construiască cât mai multe piramide din cartonașe pătratice identice. El are la dispoziție N cartonașe numerotate de la 1 la N, albe sau gri, așezate în ordinea strict crescătoare a numerelor.
1 și 2 așezate alăturat, peste care va așeza cartonașul 3 (vârful piramidei).4, 5 și 6 așezate alăturat, deasupra cărora se vor așeza cartonașele 7 și 8, alăturate, peste care se va așeza cartonașul 9 (vârful piramidei).4 cartonașe (cu numerele de la 10 la 13), respectiv 5 cartonașe (cu numerele de la 20 la 24), 6 cartonașe (cu numerele de la 35 la 40) etc., cât timp va putea construi o piramidă completă. De exemplu, dacă Rareș are N=75 cartonașe atunci el va construi piramidele complete 1, 2, 3, 4 și 5 din imaginile următoare. Din cele 75 de cartonașe el va folosi doar primele 55 de cartonașe, deoarece ultimele 20 cartonașe nu sunt suficiente pentru a construi piramida 6, cu baza formată din 7 cartonașe.
Scrieţi un program care să citească numerele naturale N (reprezentând numărul de cartonașe), X (reprezentând numărul unui cartonaș), K (reprezentând numărul de cartonașe albe), numerele celor K cartonașe albe c1, c2, …, cK și care să determine:
a) numărul P al piramidei complete ce conține cartonașul numerotat cu X;
b) numărul M maxim de piramide complete construite de Rareș;
c) numărul C de cartonașe nefolosite;
d) numărul A al primei piramide complete care conține cele mai multe cartonașe albe.
OJI 2014, Clasa a V-a
| Problema | Piramide | Operații I/O |
piramide.in/piramide.out
|
|---|---|---|---|
| Limita timp | 0.5 secunde | Limita memorie |
Total: 2 MB
/
Stivă 2 MB
|
| Id soluție | #64415515 | Utilizator | |
| Fișier | piramide.cpp | Dimensiune | 963 B |
| Data încărcării | 05 Mai 2026, 20:43 | Scor/rezultat | 70 puncte |
In file included from /usr/include/c++/13/iostream:41, from piramide.cpp:1: In member function ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>]’, inlined from ‘int main()’ at piramide.cpp:41:13: /usr/include/c++/13/ostream:204:25: warning: ‘piramida_x’ may be used uninitialized [-Wmaybe-uninitialized] 204 | { return _M_insert(__n); } | ~~~~~~~~~^~~~~ piramide.cpp: In function ‘int main()’: piramide.cpp:13:53: note: ‘piramida_x’ was declared here 13 | long long n, n_copie, x, k, c, nr_piramide = 0, piramida_x, nr_c=0, max_c = 0, cnt_c=0, piramida_c; | ^~~~~~~~~~ In member function ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>]’, inlined from ‘int main()’ at piramide.cpp:41:77: /usr/include/c++/13/ostream:204:25: warning: ‘piramida_c’ may be used uninitialized [-Wmaybe-uninitialized] 204 | { return _M_insert(__n); } | ~~~~~~~~~^~~~~ piramide.cpp: In function ‘int main()’: piramide.cpp:13:93: note: ‘piramida_c’ was declared here 13 | long long n, n_copie, x, k, c, nr_piramide = 0, piramida_x, nr_c=0, max_c = 0, cnt_c=0, piramida_c; | ^~~~~~~~~~
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 1 | 0.001 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 2 | 0.001 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 3 | 0.002 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 4 | 0.001 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 5 | 0.002 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 6 | 0.002 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 7 | 0.002 secunde | Incorect! | 10 | 0 | ||
| 8 | 0.001 secunde | Incorect! | 10 | 0 | ||
| 9 | 0.008 secunde | Cerinta a - corect. Cerinta b - corect. Cerinta c - corect. Cerinta d - corect. | 10 | 10 | ||
| 10 | 0.001 secunde | Incorect! | 10 | 0 | ||
| Punctaj total | 70 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Piramide face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
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ă.