Cod sursa(job #1379609)

Utilizator cristina_borzaCristina Borza cristina_borza Data 6 martie 2015 18:38:00
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#define NMAX 1000005
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long t,i,n,p[NMAX],nr,aux,sol1,sol2,k,n1;
char c[NMAX];
void ciur()
{
    int i,j;
    c[1]=1;
    for(i=2;i*i<=NMAX;i++)
    {
        if(c[i]==0)
        {
            for(j=i*i;j<=NMAX;j+=i)
            {
                c[j]=1;
            }
        }
    }
    for(i=1;i<=NMAX;i++)
    {
        if(c[i]==0)
        {
            p[++k]=i;
        }
    }
}
int main()
{
    f>>t;
    ciur();
    for(i=1;i<=t;i++)
    {
        f>>n;
        k=1;
        sol1=1;
        sol2=1;
        n1=n;
        while(p[k]<=n && p[k]*p[k]<=n1)
        {
            nr=0;
            aux=1;
            while(n%p[k]==0)
            {
                n/=p[k];
                nr++;
                aux*=p[k];
            }
            if(nr!=0)
                sol1*=(nr+1);
            sol2*=(aux*p[k]-1)/(p[k]-1);
            sol2%=MOD;
            k++;
        }
        g<<sol1<<" "<<sol2<<'\n';
    }
    return 0;
}