Cod sursa(job #2523607)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 14 ianuarie 2020 14:49:52
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
#define ull unsigned long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
ull ans = 1;
ull n;
ull Pow = 1;
ull aux;
int nr_prime = 0;
bool ciur[1000005];
ull prime[100001];

void Ciur()
{
    for (int i = 2; i <= 1000000; i++) if (ciur[i] == 0)
        {
            for (int j = i + i; j <= 1000000; j += i)
            {
                ciur[j] = 1;
            }
        }
    for (int i = 2; i <= 1000000; i++)
    {
        if (ciur[i] == 0)
        {
            nr_prime ++ ;
            prime[nr_prime] = i;
        }
    }
}

void solve()
{
    int i;
    ull ans = 1;
    ull ans2 = 1;
    ull aux = 0;
    ull po;
    for (i = 1; prime[i] <= n and i <= nr_prime; i++)
    {
        if (n % prime[i] == 0)
        {
            po = 1;
            aux = 0;
            while (n % po == 0)
            {
                aux ++;
                po *= prime[i];
            }
            ans *= (po - 1);
            ans /= (prime[i] - 1);
            ans2 *= aux;

        }
    }
    //g<<"aya";
    g <<ans2<<" "<< ans <<"\n";

}

int main() {
    int test;
    f >> test;
    Ciur();
    while (test --)
    {
        f >> n;
        solve();
    }



    return 0;
}