Cod sursa(job #1901522)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 4 martie 2017 00:37:04
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include <cmath>
#define NMax 1000000
using namespace std;

long long n, t, i, j, aux, s, nr, p[78499], k, e, m;
bool viz[NMax+5];
int main ()
{
    for (i=2; i<=NMax; i++){
        if (viz[i]==0){
            p[++k]=i;
            for (j=2; j*i<=NMax; j++)
                viz[i*j]=1;
        }
    }

    freopen("ssnd.in", "r", stdin);
    freopen("ssnd.out", "w", stdout);

    scanf("%lld", &t);
    for (i=1; i<=t; i++){
        scanf("%lld", &n);
        j=1;
        aux=n;
        s=1; nr=1;
        while (p[j]*p[j]<=aux && j<=k){
            e=0;
            while (n%p[j]==0){
                n=n/p[j];
                e++;
            }
            if (e>0){
                m=pow(p[j], e+1);
                s=(s*((m-1)/(p[j]-1)))%9973;
                nr=nr*(e+1);
            }
            j++;
        }
        if (n>1){
            nr=nr*2;
            s=(s*((n*n-1)/(n-1)))%9973;
        }
        printf("%lld %lld\n", nr, s);
    }
}