Cod sursa(job #2508274)

Utilizator RamanujanNeacsu Mihnea Ramanujan Data 11 decembrie 2019 20:44:42
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;
int sEuler(long long n)
{
   int total=1;
   for(int i=2; (i*i<=n&&n>1); i++)
   {
      int suma=1, temp=1;
      while(n%i==0)
      {
         temp=(temp*i)%9973;
         suma=(suma+temp)%9973;
         n/=i;
      }
      total*=suma;
      total%=9973;
   }
   if(n>=2)
      total=(total*(n+1))%9973;
   return total;
}
int nEuler(long long n)
{
   int drp=1;
   for(int i=2; (i*i<=n&&n>1); i++)
   {
       int p=0;
       while(n%i==0)
       {
          n/=i;
          p++;
       }
       drp=(drp*(p+1));
   }
   if(n>1)
     drp=(2*drp);
   return drp;
}
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int main()
{
    long long n, t; fin>>t;
    for(int drp=0; drp<t; drp++)
    {
        fin>>n;
        fout<<nEuler(n)<<" "<<sEuler(n)<<endl;
    }
    fin.close();
    fout.close();
    return 0;
}