Cod sursa(job #1926989)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 14 martie 2017 20:58:01
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <bits/stdc++.h>
#define tip long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
void ciur();
tip t,n,sd,nd,i,e,q,sp,vp,k,j,p[1000010];
int main()
{
    ciur();
    f>>t;
    for(; t; t--)
    {
        f>>n;
        sd=1;nd=1;
        for(i=1; p[i]*p[i]<=n&&i<=k; i++)
            if(n%p[i]==0)
            {
                e=1;
                q=p[i];
                sp=1;
                vp=1;
                while(n%q==0)
                {
                    e++;
                    vp*=q;
                    sp+=vp;
                    n/=q;
                }
                sd=(sd*sp)%9973;
                nd*=e;
            }
        if(n>1)
        {
            sd=(sd*(1+n))%9973;
            nd*=2;
        }
        g<<nd<<' '<<sd<<'\n';

    }
    return 0;
}
void ciur()
{
    k=1;
    p[k]=2;
    for(i=3; i<=1000; i+=2)
        if(!p[i])
        {
            k++;
            p[k]=i;
            for(j=i*i; j<=1000000; j+=2*i)
                p[j]=1;
        }
    for(; i<=1000000; i+=2)
        if(!p[i])
        {
            k++;
            p[k]=i;
        }
}