Cod sursa(job #1628329)

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

int nr_div, sum_div;

void desc (long long n)
{
    nr_div = 1;
    sum_div = 1;
    int 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 * (e + 1);
            sum_div = sum_div * (putere * d - 1) / (d - 1);
        }
        d++;
    }
    if (n > 1)
    {
        nr_div = nr_div * 2;
        sum_div = sum_div * (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("%d %d\n", nr_div, sum_div);
    }
    return 0;
}