În zorii zilei, harnicele albinuţe se pregătesc să zboare la cules de nectar. În apropierea stupului, se află o grădină fermecată cu N
flori, numerotate 1
, 2
,… N
. Pentru fiecare floare se cunoaște numărul de petale.
Anumite flori din grădină pot fi flori capcană. O astfel de floare are un număr prim de petale. Dacă o albină s-ar aşeza pe corola florii capcană, atunci floarea i-ar fura o cantitate de nectar egală cu numărul ei de petale.
Alte flori pot fi florile abundenţei. Numărul de petale ale florii abundenţei are un număr impar de divizori. Dacă o albină s-ar aşeza pe corola unei astfel de flori, atunci ea i-ar dărui albinuţei o cantitate de nectar egală cu triplul numărului ei de petale.
Celelalte flori pot fi flori obişnuite. Dacă o albină s-ar aşeza pe corola unei flori obişnuite, atunci floarea i-ar dărui albinuţei o cantitate de nectar egală cu numărul ei de petale.
Regina stupului, le-a poruncit albinuţelor să adune cea mai mare cantitate de nectar care se poate culege din grădină, altfel … vor fi alungate din stup.
Cerinţă
Scrieţi un program care să citească numerele naturale N
și numărul de petale ale fiecărei flori şi care să determine cantitatea maximă C
de nectar pe care albinuţele o pot aduna din grădina fermecată.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere naturale, reprezentând numărul de petale ale fiecărei flori.
Date de ieșire
Programul va afișa pe ecran numărul C
.
Restricții și precizări
1 ≤ n ≤ 100 000
- fiecare floare are cel mult
10 000
petale - Nectarul unei flori poate fi cules de o singură albină.
- Cantitatea maximă
C
de nectar culeasă este un număr natural,C ≤ 2 000 000 000
Exemplu
Intrare
8 25 13 10 7 1 12 31 102
Ieșire
202
Explicație
Cantitatea maximă de nectar se obţine din florile 1
, 3
, 5
, 6
şi 8
. C=3x25+10+3x1+12+102=202
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 Max:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int C = 0 , d;
float f;
int n , p;
cin >> n;
for(int i = 1 ; i <= n ; i++)
{
cin >> p;
f = sqrt(p);
if(f * f == p) //daca e patrat perfect C<-C+3p
C += 3 * p;
else
for(d = 2 ; d * d <= p ; d++) //daca nu e numar prim, atunci C<-C+p
if(p % d == 0)
{
C += p;
break;
}
}
cout << C;
return 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 #971 Max
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #971 Max 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!