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 de1
leu ș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 de2
lei ș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 de3
lei ș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; }