Cod sursa(job #1922748)

Utilizator SirbuSirbu Ioan Sirbu Data 10 martie 2017 18:45:04
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#define mod 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");

/*
    Solutie de 70p folosind
    descompunere in factori primi
*/

int main (){

  int t;
  long long x;
  fin >> t;
  for (int i = 1; i <= t; ++i){
    fin >> x;
    int copie = x;
    int nr_div = 1;
    int suma_div = 1;
    for (int j = 2; j*j <= copie; ++j){
      int exp = 0;
      int fact = j;
      while (copie % j == 0){
        copie = copie/j;
        exp++;
        fact = fact*j;
      }
      if (exp){
        suma_div = (suma_div*((fact-1)/(j-1)))%mod;
        nr_div = nr_div*(exp+1);
      }
    }
    if (copie > 1){
      nr_div = nr_div*2;
      suma_div = (suma_div*((copie*copie-1)/(copie-1)))%mod;
    }
    fout << nr_div << " " << suma_div << "\n";
  }
  return 0;
}