Cod sursa(job #2238131)

Utilizator pinteastefanPintea Teodor Stefan pinteastefan Data 4 septembrie 2018 18:01:37
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>

using namespace std;

vector <int> prime;
bitset <1000001> vf;
void ciur ()
{
    for (int i = 2; i <= 1000000; i++)
    {
        if (!vf[i])
        {
            prime.push_back(i);
            for (int j = i << 1; j <= 1000000; j+=i)
                vf[j] = 1;
        }
    }
}
int main() {
    ifstream inputFile("ssnd.in");
    ofstream outputFile("ssnd.out");
    ciur();
    long long x;
    int n;
    inputFile >> n;
    for (int i = 1; i <= n; i++)
    {
        inputFile >> x;
        long long s = 1;
        int p = 1;
        for (auto y : prime)
        {
            int nr = 0;
            long long power = 1;
            if (1LL * y * y > x) break;
            while ( x % y == 0)
            {
                x /= y;
                nr++;
                power *= y;
            }
            p*= (nr+1);
            power *= y;
            power -= 1;
            s *= (power / (y - 1));
        }
        if (x != 1)
        {
            p <<= 1;
            s *= (x + 1);
        }
        outputFile << p << " " << s % 9973 << "\n";
    }
    return 0;
}