332
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*nprăjituri fiecare având prețul de1leu și având scris numărul1î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 de2lei și având scris numărul2î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 de3lei și având numărul3în partea de sus. - ș.a.m.d.
a) Calculați și afișați numărul de nivele pe care le are tortul special.
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.
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n , a[102] , s = 0;
cin >> n;
for(int i = 1 ; i <= n ; ++i)
a[i] = 1;
int n1=n;
if(n % 2 == 1) n1++;
cout << n1 / 2 << endl;
for(int i = 1 ; i <= n1/2 ; ++i)
{
for(int j = 1 ; j <= n ; ++j)
cout << a[j];
cout << endl;
for(int j = i+1 ; j <= n-i ; ++j) a[j]++;
}
for(int i = n / 2 ; i >= 1 ; --i)
{
for(int j = i + 1 ; j <= n - i ; ++j) a[j]--;
for(int j = 1 ; j <= n ; ++j)
cout << a[j];
cout << endl;
}
int k = n;
for(int j = 1 ; j <= n1/2 && k >= 1; ++j)
{
s += j * k * k;
k -= 2;
}
cout << s;
return 0;
}
Comentarii