fbpx

Problema #2663 – Divisors – Rezolvari PBInfo

de Mihai-Alexandru

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

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.

int NrDiv(int n)
{
    int cnt=0;
    for(int i = 1 ; i * i <= n ; ++i)
    {
        if(n % i == 0)
            cnt+=2;
        if(i * i == n)
            cnt--;
    }
    return cnt;
}

int NextNrDiv(int n)
{
    for(int i = n + 1 ; i ; ++i)
        if(NrDiv(i)==NrDiv(n))
            return i;
}

int PrevNrDiv(int n)
{
    for(int i = n - 1 ; i >= 1 ; --i)
        if(NrDiv(i)==NrDiv(n))
            return i;
    return -1;
}
Comentarii

S-ar putea sa iti placa