Cod sursa(job #2456594)

Utilizator stefanut999Paul Colta stefanut999 Data 14 septembrie 2019 19:11:01
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int t,c,v[1000005],nv;
long long int n,d,x,nrd,sd,y,i,j;
bool ciur[1000005];
int main()
{
  for(i = 2;i <= 1000;i++)
      if(!ciur[i] )
          for(j=i*i;j <= 1000000;j = j + i)
              ciur[j]=1;
  fin >> t;

  for(i = 2;i <= 1000000;i++)
      if(!ciur[i])
          v[++nv] = i;

while(t--)
  {
      fin >> n;
      d = 1;
      x = n;
      nrd = 1;
      sd = 1;
      while(v[d] * v[d] <= x)
      {
          c = 0;
          y = 1;
          while(x % v[d] == 0)
          {
              c++;
              x = x / v[d];
              y = y * v[d];
          }
          if(c >= 1)
          {
              y = y * v[d];
              nrd = nrd * (c+1);
              sd = (sd * ((y - 1) / (v[d] - 1)))%9973;
          }
          d++;
      }
      if(x > 1)
      {
          nrd *= 2;
          sd = (sd*(x + 1))%9973;
      }
      fout<< nrd << ' ' << sd <<'\n';
  }
  fin.close();
  fout.close();
  return 0;
}