Cod sursa(job #1379249)

Utilizator cristina_borzaCristina Borza cristina_borza Data 6 martie 2015 17:09:56
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#define NMAX 10000005
#define MOD 9973
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
long long t,i,n,p[NMAX],c[NMAX],nr,aux,sol1,sol2,k;
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;
        while(p[k]<=n)
        {
            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;
}