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
10
19
Exemplu
Intrare
5 28 7 8 9 6
Ieșire
1 0 0 0 1
Explicație
28
și 6
sunt numere perfecte.
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Perfecte:
#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 ";
}
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1960 Perfecte
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1960 Perfecte de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!