Informatică, întrebare adresată de lilianacamelia75, 8 ani în urmă

DAU COROANA SAU ORICE numai sa rezolv aceasta problema








Cerința

Un celebru rezolvitor de pe pbinfo împlinește venerabila vârstă de n ani. Ceilalți rezolvitori s-au gândit să îi facă o surpriză și să comande un tort special. Acesta are mai multe nivele, toate având forma pătrată, astfel:


primul nivel este format din n*n prăjituri fiecare având prețul de 1 leu și având scris numărul 1 în partea de sus.

al doilea nivel se suprapune peste primul exact la mijloc și este format din (n-2)*(n-2) prăjituri fiecare având prețul de 2 lei și având scris numărul 2 în partea de sus.

al treilea nivel se suprapune peste al doilea exact la mijloc și este format din (n-4)*(n-4) prăjituri fiecare având prețul de 3 lei și având numărul 3 în partea de sus.

ș.a.m.d.

a) Calculați și afișați numărul de nivele pe care le are tortul special.

b) Afișați tortul, așa cum se vede dacă este privit de sus.

c) Calculați și afișați prețul tortului.


Date de intrare

Programul citește de la tastatură numărul n reprezentând vârsta celebrului rezolvitor.


Date de ieșire

Programul va afișa pe ecran pe prima linie numărul de nivele pe care le are tortul special.

Pe următoarele n linii va fi desenat tortul, iar pe următoarea linie va fi scris prețul tortului.


Restricții și precizări

1 ≤ n ≤ 100




Exemplu

Intrare


5

Ieșire


3

11111

12221

12321

12221

11111

46

Explicație

Tortul are 3 nivele. Primul nivel este format din 25 de prăjituri (fiecare cu prețul de 1 leu și cifra 1), al doilea din 9 prăjituri (fiecare cu prețul de 2 lei și cifra 2), iar al treilea dintr-o singură prăjitură (cu prețul 3 lei și cifra 3).


Prăjiturile de pe primul nivel costă în total 25 lei, cele de pe al doilea 18 lei, iar cele de pe al treilea 3 lei.


lilianacamelia75: in orice metoda din c++ e buna; nu conteaza optimizarea doar rezolvarea ca de acolo pleaca totul
boiustef: e acceptat vector?
lilianacamelia75: dap
lilianacamelia75: orice librarie
lilianacamelia75: orice fel de vector.
lilianacamelia75: multumesc pt ca ma ajuti
boiustef: auu am pus codul dar nu l-am verificat pe pbinfo....
boiustef: la mine merge bine, dar pe pb nu la acceptat... 0 puncte, scrie raspuns gresit
boiustef: posibil nu-i plac vectorii
Porecla0987: Posibil sa afisezi ceva in plus

Răspunsuri la întrebare

Răspuns de boiustef
3

Răspuns:

#include <iostream>

using namespace std;

int n,i,j,nivele,s,p,v[101][101];

int main()

{

   cin >> n;

   nivele=n/2+n%2;

   p=1;

   int copie=n;

   while (n>0)

   {

       s=s+p*n*n;

       n-=2;

       ++p;

   }

   cout << nivele << endl;

   n=copie;

   int a=1, b=n;

   p=1;

   while (a<=b)

   {

       for (j=a; j<=b; j++)

       {

           v[a][j]=p; v[b][j]=p;

       }

       for (i=a+1; i<b; i++)

       {

           v[i][a]=p; v[i][b]=p;

       }

       ++a; --b; ++p;

   }

   for (i=1; i<=n; i++)

   {

       for (j=1; j<=n; j++)

           cout << v[i][j];

       cout << endl;

   }

   cout << s;

   return 0;

}

Explicație:


boiustef: am gasit eroarea.. am corectat.. sunt 100 puncte
boiustef: :))) nu afiseam ultima linie...
Răspuns de Porecla0987
2

100 de puncte pe pbinfo

#include <iostream>

using namespace std;

int main()

{

   int numar_total_randuri, pret_total = 0, matrice[100][100] = {0};

   cin >> numar_total_randuri;

   for (int rand = 0; rand < numar_total_randuri; rand++)

   {

       for (int coloana = rand; coloana < numar_total_randuri - rand; coloana++)

       {

           if (matrice[rand][coloana] == 0)

               matrice[rand][coloana] = rand + 1;

           if (matrice[coloana][rand] == 0)

               matrice[coloana][rand] = rand + 1;

           if (matrice[numar_total_randuri - rand - 1][coloana] == 0)

               matrice[numar_total_randuri - rand - 1][coloana] = rand + 1;

           if (matrice[coloana][numar_total_randuri - rand - 1] == 0)

               matrice[coloana][numar_total_randuri - rand - 1] = rand + 1;

       }

   }

   cout << (numar_total_randuri + 1) / 2 << endl;

   for (int rand = 0; rand < numar_total_randuri; rand++)

   {

       for (int coloana = 0; coloana < numar_total_randuri; coloana++)

       {

           cout << matrice[rand][coloana];

       }

       cout << endl;

   }

   int pret_actual = 1, numar_prajituri = numar_total_randuri;

   while (numar_prajituri > 0)

   {

       pret_total = pret_total + pret_actual * numar_prajituri * numar_prajituri;

       numar_prajituri -= 2;

       pret_actual++;

   }

   cout << pret_total;

}

Alte întrebări interesante