Cod sursa(job #2219850)

Utilizator HumikoPostu Alexandru Humiko Data 9 iulie 2018 21:57:21
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>
#define lim 1000000
#define MOD 9973

using namespace std;

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

int t;
int f[lim+5];
vector <int> prime_Factors;

long long n;

void getPrimeFactors()
{
    for ( int i = 2; i <= sqrt(lim); ++i )
    {
        if ( f[i] == 0 )
        {
            prime_Factors.push_back(i);
            f[i] = 1;
            for ( int j = 2*i; j <= lim; j += i )
                f[j] = 1;
        }
    }
}

int main()
{
    getPrimeFactors();
    fin>>t;
    for ( int query = 1; query <= t; ++query )
    {
        long long no_of_Divisors = 1, sum_of_Divisors = 1;
        fin>>n;
        for ( auto x:prime_Factors )
        {
            int exponent = 1;
            long long value = x;
            while ( n%x == 0 )
            {
                n /= x;
                exponent++;
                value *= x;
            }
            no_of_Divisors *= exponent;
            sum_of_Divisors *= (value-1)/(x-1);
        }
        fout<<no_of_Divisors<<" "<<sum_of_Divisors%MOD<<'\n';
    }
}