Cod sursa(job #1375514)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 5 martie 2015 13:28:03
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#define MOD 9973
using namespace std;

ifstream f("ssnd.in");
ofstream g("ssnd.out");

bool prim[1000001];
int div1[100001], m, n, i, j;
long long s, q, nr, nrd;
long long x, y;

void ciur()
{
    m = 0;
    for (i = 2; i <= 1000000; i++)
        if (prim[i] == 0)
        {
            m++, div1[m] = i;
            for (j = 2 * i; j <= 1000000; j += i)
                prim[j] = 1;
        }
}

int main()
{
    ciur();
    f >> n;
    for (i = 1; i <= n; i++)
    {
        f >> x;
        y = x;
        nrd = 1, s = 1;
        for (j = 1; div1[j]*div1[j] <= y; j++)
        {
            q = div1[j], nr = 0;

            while (x % div1[j] == 0)
                x /= div1[j], nr++, q *= div1[j];

            nrd *= (nr+1)%MOD, s *= (q-1)/(div1[j]-1)%MOD;
        }
        if (x != 1)
            s *= (x+1)%MOD, nrd *= 2;
        g << nrd << " " << s << "\n";
    }
    return 0;
}