Cod sursa(job #2129410)

Utilizator ElizaTElla Rose ElizaT Data 12 februarie 2018 20:11:43
Problema Suma si numarul divizorilor Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ifstream fin("ssnd.in");
    ofstream fout("ssnd.out");
    int n,a,cnt,div;
    unsigned long long int nr,s;
    fin >> n;
    for (int i = 0;i < n;i++)
    {
        fin >> a;
        cnt = 0;
        nr = 1;
        s = 1;
        div = 3;
        while (a % 2 == 0)
        {
            cnt++;
            a /= 2;
        }
        if (cnt > 0)
        {
            nr = cnt + 1;
            s = pow (2, (cnt + 1));
            s--;
        }
        s %= 9973;
        while (div * div <= a && a > 1)
        {
            cnt = 0;
            while (a % div == 0)
            {
                cnt++;
                a /= div;
            }
            if (cnt > 0)
            {
                nr *= cnt + 1;
                s *= (pow(div, (cnt + 1)) - 1);
                s /= (div - 1);
                s %= 9973;
            }
            div += 2;
        }
        if (a != 1)
        {
            nr *= 2;
            s *= (a * a - 1);
            s /= (a - 1);
            s %= 9973;
        }
        fout << nr << " " << s << '\n';
    }
    return 0;
}