# PBinfo #1960 – Perfecte – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.
Exemplu: 28 este număr perfect pentru că 28 = 1 + 2 + 4 + 7 + 14.

Cerința
Se dă un șir de n numere naturale. Pentru fiecare element din șir se va afișa valoarea 1 dacă acesta este perfect sau 0 în caz contrar.

Date de intrare
Programul citește de la tastatură numărul n și apoi n numere naturale.

Date de ieșire
Programul va afișa pe ecran șirul de valori 1 și 0 separate prin câte un spațiu, conform cerinței.

Restricții și precizări

0 < n < 1000
numerele citite vor fi mai mici decât 1019

Exemplu:
Intrare

5
28 7 8 9 6
Ieșire

1 0 0 0 1
Explicație
28 și 6 sunt numere perfecte.

## Cod sursă C++

```cpp
#include"iostream"
using namespace std;
typedef unsigned long long LL;
bool esteprim(LL a)
{
    if(a < 2)
        return false;
    if(a == 2)
        return true;
    if((a & 1) == 0)
        return false;
    for(LL i=3 ; i*i<=a ; ++i)
        if(a % i == 0)
            return false;
    return true;
}
LL putere(LL baza, LL exponent)
{
    LL rez = baza;
    for(LL i = 1 ; i < exponent ; ++i)
            rez *= baza;
        return rez;
}
int main()
{
    LL V[8]={}, k=0 , N, X[1000];
    for(LL y=1 ; y< 32 ; ++y)
        if(esteprim(putere(2, y)-1))
            V[k++]=(putere(2, y)-1)*putere(2,(y-1));
    cin>>N;
    for(int i=0 ; i< N ; ++i)
        cin>>X[i];
    for(int i=0 ; i< N ; ++i)
    {
        bool gasit = false;
        for(LL j=0 ; j< 8 ; ++j)
            if(X[i] == V[j])
            {
                cout<<"1 ";
                gasit = true;
            }
        if(!gasit)
            cout<<"0 ";
    }
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1960)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1960/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1960/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
