Cod sursa(job #1687483)

Utilizator ancabdBadiu Anca ancabd Data 12 aprilie 2016 21:28:09
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <cmath>

using namespace std;

ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");

long long nrt, a, nrdiv=1, sumdiv=1, div1, exp1, ind;
bool x[1000005];
int ciur[80001];

int main()
{
    x[1]=1;
    x[0]=1;
    for (int i = 1; i<= 1000001; i++)
    {
        if (x[i] == 0)
        {
            ciur[++ind]=i;
            for (int j = i+i; j<= 1000001; j+=i)x[j]=1;
        }
    }
    int loc=1;
    fin >> nrt;
    for (int i =1; i<= nrt; i++)
    {
        fin >> a;
        div1 = 2;
        sumdiv = 1;
        nrdiv = 1;
        loc=0;
        while (a > 1)
        {
            div1 = ciur[++loc];
            exp1=0;

            while (a% div1 == 0 && a > 1){a = a/div1; exp1++;}

            nrdiv*=(exp1+1);

            if (exp1!=0)sumdiv*=((pow(div1, exp1+1)-1)/(div1-1));
            sumdiv = sumdiv%9973;
        }
        fout << nrdiv << ' ' << sumdiv << '\n';
    }
    return 0;
}