👤

#2323 prim001

Cerința
Se dă un număr natural n. Să se afle numărul divizorilor naturali ai lui nn.

Date de intrare
Programul citește de la tastatură numărul n.

Date de ieșire
Programul va afișa pe ecran numărul divizorilor lui nn, modulo 59999.

Restricții și precizări
1 ≤ n ≤ 1013



Exemplu
Intrare

4
Ieșire

9
Explicație

Numărul 44=256 are 9 divizori: 1,2,4,8,16,32,64,128,256.

Obtin 60%, "am depasire timp"
As dori o sursa mai eficienta daca se poate :D


Răspuns :

#include <iostream>

using namespace std;

long long n, m, d, p, exp[200], rez[200], k, i;

int main()

{

   cin >> n;

   d=2; m=n;

   while(m!=1)

   {

       p=0;

       while(m%d==0)

       {

           m=m/d;

           p++;

       }

       if(p>0) { ++k; exp[k]=p; }

       d++;

   }

       for (i=1; i<=k; ++i)

       {

           exp[i]=(n*exp[i]+1)%59999;

       }

   m=1;

   for (i=1; i<=k; ++i)

   {

       m=m*(exp[i])%59999;

   }

   cout << m;

}