Cod sursa(job #2469379)

Utilizator sygAndreiIonitaIonita Andrei sygAndreiIonita Data 6 octombrie 2019 22:08:40
Problema Suma divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>

using namespace std;

ifstream in ("ssnd.in");
ofstream out ("ssnd.out");

bool p[1000001];
int v[80001];

const int MOD=9973;

int pw (int exp,int d)
{
  int i=1,t=1;
  for (i=1;i<=exp;i++)
      t=(t*d)%MOD;
  return t;
}

int main()
{
    int cnt=0,t;
    long long i,j,p1,p2,exp,a;
    for (i=2;i<=1000000;i++)
        if (!p[i])
    {
      v[++cnt]=i;
      for (j=i*i;j<=1000000;j+=i)
            p[j]=1;
    }
    in>>t;
    for (i=1;i<=t;i++)
    {
      in>>a;
      p1=p2=1;
      for (i=1;v[i]*v[i]<=a;i++)
      {
        exp=0;
        while (a%v[i]==0)
            exp++,a/=v[i];
        p1*=(exp+1);
        if (exp)
            p2=(p2*((pw(exp+1,v[i])-1)/(v[i]-1)))%MOD;
      }
      if (a>1)
      {
        p1=p1*2;
        p2=(p2*((a*a-1)/(a-1)))%MOD;
      }
      out<<p1<<" "<<p2<<'\n';
    }
    return 0;
}