Cod sursa(job #1157629)

Utilizator andreismara97Smarandoiu Andrei andreismara97 Data 28 martie 2014 17:50:25
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
short int ciur[500015]={0};
long long n,v[500005],nr=0;

void ciurr()
{
    int i,j;
    for(i=4;i<=500005;i+=2)
        ciur[i]=1;
    for(i=3;i<=500005;i+=2)
        if(ciur[i]==0)
            for(j=i*2;j<=500005;j+=i)
                ciur[j]=1;
    for(i=2;i<=500005;i++)
        if(ciur[i]==0)
        {
            nr++;
            v[nr]=i;
        }
}

int main ()
{
    long long i,j,a,val=0,p=0,nrdiv,suma,aux;
    ciurr();
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>a;
        val=0;
        nrdiv=1;
        suma=1;
        while(a!=1)
        {
            val++;
            p=0;
            while(a%v[val]==0)
            {
                p++;
                a/=v[val];
            }
            nrdiv*=p+1;
            if(p>0)
            {
                aux=pow((double)v[val],(double)p+1);
                suma*=(aux-1)/(v[val]-1);
                suma%=9973;
            }
        }
        out<<nrdiv<<' '<<suma<<'\n';
    }
    return 0;

}