Cod sursa(job #1628330)

Utilizator corvinus2003Corvin Ghita corvinus2003 Data 3 martie 2016 23:02:16
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <cstdio>

long long nr_div, sum_div;

void desc (long long n)
{
    nr_div = 1;
    sum_div = 1;
    long long e, d = 2, putere;
    while (d * d <= n && n > 1)
    {
        e = 0;
        putere = 1;
        while (n % d == 0)
        {
            e++;
            putere = putere * d;
            n = n / d;
        }
        if (e)
        {
            nr_div = nr_div * 1LL * (e + 1);
            sum_div = sum_div * 1LL * (putere * d - 1) / (d - 1);
        }
        d++;
    }
    if (n > 1)
    {
        nr_div = nr_div * 2;
        sum_div = sum_div * 1LL * (n * n - 1) / (n - 1);
    }
}

int main()
{
    freopen("ssnd.in", "r", stdin);
    freopen("ssnd.out", "w", stdout);
    int t;
    long long n;
    scanf("%d", &t);
    int i;
    for (i = 1; i <= t; ++i)
    {
        scanf("%lld", &n);
        desc(n);
        printf("%lld %lld\n", nr_div, sum_div);
    }
    return 0;
}