fbpx

Problema #2519 – wisp – Rezolvari PBInfo

de Mihai-Alexandru

Aventurile Antoniei (cap. 1)

Antonia, o elevă în clasa a noua, plictisită de testele și de lecțiile de la chimie, se decide să creeze un joc. Ea alege două numere naturale nenule, n și k, cu ajutorul cărora construiește o matrice pătratică n x n în formă de spirală (dinspre exterior înspre interior, ca în figura de mai jos). Apoi, fata umple matricea cu numere naturale nenule consecutive, pornind de la k. Scopul jocului este să calculeze suma elementelor de pe diagonala principală, însă fata nu are la dispoziție decât 0.1 secunde până când doamna profesor va observa că nu este atentă la ore. Pentru n = 6 și k = 1, matricea ar arăta astfel:

Exemplu

wisp.in

6 1

wisp.out

128

Explicație

Matricea va arăta ca în imaginea anterioară.

#include <bits/stdc++.h>
using namespace std;

ifstream cin("wisp.in");
ofstream cout("wisp.out");

int main()
{
    long long int n , k;
    cin >> n >> k;
    unsigned long long int s=0;
    unsigned long long int nr=0;
    nr=k;
    s=k;
    if(n%2==0)
    {
        n--;
        while(n > 1)
        {
            nr+=2*n;
            s+=nr;
            nr+=2*n;
            s+=nr;
            n-=2;
        }
        s+=nr+2;
    }
    else
    {
        n--;
        while(n > 1)
        {
            nr+=2*n;
            s+=nr;
            nr+=2*n;
            s+=nr;
            n-=2;
        }
    }
    cout << s;
    return 0;
}
Comentarii

S-ar putea sa iti placa