Cod sursa(job #2456777)

Utilizator Diana-ElenaStancu Diana-Elena Diana-Elena Data 15 septembrie 2019 14:20:46
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>
#define X 1000003
#define NR 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
int main()
{
  int t, v[80000], k; long long int n, s, d, nd, sd, i, j, p;
  vector <bool>A(X + 3, 1);v[1] = 2;k = 1;
for(i = 4; i <= X; i += 2)
  A[i] = 0;
for(i = 3; i <= X; i += 2)
{
  if(A[i] == 1)
  {
    v[++k] = i;
    for(j = 2; j <= X/i; ++j)
      A[i * j] = 0;
  }
}

fin >> t;
while(t--)
{
  fin >> n;
  sd = nd = 1;
  for(i = 1; n != 1; ++i)
  {
    int d = 0;
    p = 1;
    if(n%v[i] == 0)
    {
      while(n%v[i] == 0)
      {
        n /= v[i];
        p *= v[i];
        ++d;
      }
      p *= v[i];
      nd = nd * (d + 1);
      sd = (sd*((p - 1)/(v[i] - 1)))%NR;
    }
  }
  fout << nd << ' ' << sd<< '\n';
}
return 0;
}