Cod sursa(job #2569101)

Utilizator florinrafiliuRafiliu Florin florinrafiliu Data 4 martie 2020 11:06:18
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
using namespace std;

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

long long n, x, k, s, nr, c, y, z;
long long j, i;
short fr[1000001];
int v[80000];

int main()
{
    fin >> n;
    fr[0] = 1; fr[1] = 1;
    for(i = 2; i <= 1000000; i++)
    {
        if(fr[i] == 0)
        {
            k++;
            v[k] = i;
            for(j = i * i; j <= 1000000; j += i)
                fr[j] = 1;
        }
    }
    for(k = 1; k <= n; k++)
    {
        fin >> x;
        s = 1;
        nr = 1;
        i = 0;
        while(v[i] * v[i] <= x && x > 1)
        {
            i++;
            c = 0;
            while(x % v[i] == 0)
            {
                x /= v[i];
                c++;
            }
            nr = nr * (c+1);
            y = 1;
            for(j = 1; j <= c+1; j++)
                y = y * v[i];
            s = (s * (y - 1)/(v[i] - 1)) % 9973;
        }
        if (x > 1) {
            nr *= 2;
            s = (s * (x * x - 1)/(x - 1)) % 9973;
        }
        fout << nr<< " " << s  << "\n";
    }

    return 0;
}