Cod sursa(job #1129150)

Utilizator XeBluePodaru Mihai XeBlue Data 27 februarie 2014 20:26:38
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <cmath>

using namespace std;

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

#define R 9973
#define N 1000001

long long suma, numar, n, p;
bool v[N];
int x[N];

void rezolvare();
void ciur();

int main()
{
    ciur();
    unsigned short int t;
    in >> t;

    for(int i=0;i<t;i++)
    {
        in >> n;
        rezolvare();
        out << numar << " " << suma << "\n";
    }
    in.close();
    out.close();
    return 0;
}

void ciur()
{
    int f = 0;
    for(long long i=2;i<N;i++)
        if(v[i]==false)
        {
            x[++f]=i;
            for(long long j=i*i;j<N;j+=i)
                v[j]=true;
        }
}

void rezolvare()
{
    int d, p;
    suma = 1;
    numar = 1;
    for(int i=1;n>1;i++)
    {
        d=0;p=1;
        while(!(n%x[i]))
        {
            d++;
            p*=x[i];
            n/=x[i];
        }
        numar*=(d+1);
        suma*=((p*x[i]-1)/(x[i]-1))%R;
    }
}