Cod sursa(job #1914236)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 8 martie 2017 16:02:24
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#define ma 1000000
using namespace std;
ifstream f ("ssnd.in");
ofstream g ("ssnd.out");
long long n,t,i,j,aux,s,nr,p[78499],k,e,m;
bool v[ma+3];
int main ()
{
    for(i=2; i<=ma; ++i)
    {
        if(!v[i])
        {
            p[++k]=i;
            for(j=2; j*i<=ma; ++j) v[i*j]=1;
        }
    }
    f>>t;
    for(i=1;i<=t;++i)
    {
        f>>n;
        j=1;
        aux=n;
        s=1;
        nr=1;
        while(p[j]*p[j]<=n&&j<=k)
        {
            e=0;
            m=p[j];
            while(n%p[j]==0)
            {
                n/=p[j];
                ++e;
                m=m*p[j];
            }
            if(e>0)
            {
                s=(s*((m-1)/(p[j]-1)))%9973;
                nr=nr*(e+1);
            }
            ++j;
        }
        if(n>1)
        {
            nr*=2;
            s=(s*((n*n-1)/(n-1)))%9973;
        }
        g<<nr<<' '<<s<<'\n';
    }
}