Cod sursa(job #2065268)

Utilizator LizaSzabo Liza Liza Data 13 noiembrie 2017 17:41:33
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
using namespace std;

ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD = 9973;
int N,T,Nr,Sum;

int Power(int N, int P)
{
  int Sol = 1;
  while(P)
  {
    if(P%2 == 1)
      Sol = (Sol * N)%MOD;
    N = (N*N)%MOD;
    P = P / 2;
  }
  return Sol;
}
int Invers(int N)
{
  return Power(N,MOD-2);
}
int main()
{
    fin >> T;
    while(T--)
    {
      fin >> N;

      Nr = Sum = 1;
      for(int i = 2; i <= N; ++i)
      {
        int e = 0;
        while(N%i == 0)
        {
          N = N/i;
          e++;
        }
        Nr *= (e+1); Nr %= MOD;
        Sum *= (((Power(i,e+1)-1)%MOD) * Invers(i-1))%MOD;
      }
      fout << Nr << " " << Sum << "\n";
    }
    return 0;
}