Cerința
Trebuie să definiți trei funcții având următoarele antete:
int NrDiv(int n) int NextNrDiv(int n) int PrevNrDiv(int n)
Funcția NrDiv
primește ca parametru un număr natural n
și returnează numărul divizorilor lui n
Funcția NextNrDiv
primește ca parametru un număr natural n
și returnează cel mai mic număr natural, strict mai mare decât n
, care are același număr de divizori ca și n
.
Funcția PrevNrDiv
primește ca parametru un număr natural n
și returnează cel mai mare număr natural, strict mai mic decât n
, care are același număr de divizori ca și n
. Dacă acest număr nu există, funcția va returna valoarea -1
.
Restricții și precizări
10 ≤ n ≤ 50.000
- Puteți să apelați o funcție din altă funcție. Se recomandă ca funcțiile să fie definite în ordinea descrisă mai sus în enunț.
Exemplu
NrDiv(100) = 9
, NextNrDiv(100) = 196
, PrevNrDiv(100) = 36
Important
Rezolvarea voastră trebuie să conţină definiţiile celor trei funcţii. Prezenţa în soluţie a altor instrucţiuni sau lipsa definiției vreunei funcții poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
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 Divisors :
int NrDiv(int n)
{
int i, nrd = 0;
for (i = 1; i * i < n; i++)
if (n % i == 0) nrd += 2;
if (i * i == n) nrd++;
return nrd;
}
int NextNrDiv(int n)
{
int i, nrD;
nrD = NrDiv(n);
while (1)
{
n++;
i = NrDiv(n);
if (i == nrD) return n;
}
return -1;
}
int PrevNrDiv(int n)
{
int i, nrD;
nrD = NrDiv(n);
while (n > 1)
{
n--;
i = NrDiv(n);
if (i == nrD) return n;
}
return -1;
}
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 #2663 Divisors
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #2663 Divisors 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!