Cod sursa(job #2227272)

Utilizator YusyBossFares Yusuf YusyBoss Data 31 iulie 2018 16:16:37
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

using namespace std;

bool c[1000003];
int prime[78500];

int main() {
  ifstream cin ("ssnd.in");
  ofstream cout ("ssnd.out");
  int i, j, nrp;
  nrp = 0;
  for (i = 2; i <= 1000000; i++) {
    if (c[i] == 0) {
      for (j = 2 * i; j <= 1000000; j += i)
        c[j] = 1;
      prime[nrp++] = i;
    }
  }
  int n, x;
  long long nrdiv, nrdivp, s, p, sumdiv;
  cin >> n;
  for (i = 0; i < n; i++) {
    cin >> x;
    j = 0;
    nrdiv = 1;
    sumdiv = 1;
    while (j < nrp && x > 1 && prime[j] <= x) {
      nrdivp = 0;
      s = 1;
      p = 1;
      while (x % prime[j] == 0) {
        x /= prime[j];
        nrdivp++;
        p = p * prime[j] % 9973;
        s = (s + p) % 9973;
      }
      if (nrdivp != 0) {
        nrdiv *= (nrdivp + 1);
        sumdiv = sumdiv * s % 9973;
      }
      j++;
    }
    if (x > 1) {
      nrdiv *= 2;
      sumdiv = sumdiv * (x + 1) % 9973;
    }
    cout << nrdiv << ' ' << sumdiv << '\n';
  }
  return 0;
}