Vrăjitorul Arpsod are foarte multă treabă, așa că s-a gândit să vă ocupe timpul cu o problemă foarte grea, astfel încât acesta să poată lucra liniștit la proiectele sale despre stăpânirea lumii.
Acesta vă dă T
numere naturale. Pentru fiecare număr A
trebuie să găsiți cel mai mare K
cu proprietatea că există un șir B
de numere naturale nenule, nu neapărat distincte, astfel încât: (B
1
+ 1)(B
2
+ 1)...(B
K
+ 1) = A
Cerința
Arătați-i vrăjitorului că problema nu e suficient de grea pentru voi, găsind numărul K
cerut într-un timp cât mai scurt, pentru fiecare din cele T
numere.
Date de intrare
Fișierul grea.in
va conţine pe prima linie numărul natural T
, reprezentând numărul de valori date. Urmează apoi T
linii. Pe fiecare linie va exista un număr A
, numărul dat de Arpsod.
Date de ieșire
Fișierul grea.out
, va conţine T
linii. Pe fiecare linie va exista un număr K
, reprezentând numărul maxim de termeni pe care îi poate avea șirul, astfel încât să respecte proprietatea cerută. Prima linie reprezintă raspunsul pentru primul număr, a doua penrtu cel de-al doilea … şamd.
Restricții și precizări
1 ≤ T ≤ 500
2 ≤ A ≤ 2.000.000.000
Exemplu
grea.in
1 4
grea.out
2
Explicație
Ne interesează rezultatul pentru un număr (4)
Şirul are 2
termeni: 1
şi 1 (1 + 1)(1 + 1) = 2 * 2 = 4
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 Grea:
// Implementare: Cristi Dospra
// Punctaj: 20p
// Complexitate: O(T * N)
#include <fstream>
using namespace std;
ifstream fin("grea.in");
ofstream fout("grea.out");
int main() {
int T, N;
fin >> T;
while (T--) {
fin >> N;
int Sol = 0;
for (int i = 2; i <= N; ++i) {
while (N % i == 0) {
N /= i;
Sol++;
}
}
fout << Sol << "\n";
}
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 #2037 Grea
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2037 Grea 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!