Cod sursa(job #1990099)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 10 iunie 2017 15:20:27
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>
#define tip long long
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
int k,t,i,e,nd;
bitset<1000010> B;
tip p[80000],n,sd,s,u;
void ciur();
int main()
{
    ciur();
    f>>t;
    for(; t; t--)
    {
        f>>n;
        sd=1;
        nd=1;
        for(i=1; i<=k&&p[i]*p[i]<=n; i++)
            if(n%p[i]==0)
            {
                e=1;
                u=1;
                s=1;
                for(; n%p[i]==0; n/=p[i])
                {
                    e++;
                    u*=p[i];
                    s+=u;
                }
                sd*=s;
                nd*=e;
            }
        if(n>1)
            sd*=n+1,nd*=2;
        g<<sd<<' '<<nd<<'\n';
    }
    return 0;
}
void ciur()
{
    int i,j;
    p[++k]=2;
    for(i=3; i<=999; i+=2)
        if(!B[i])
        {
            p[++k]=i;
            for(j=i*i; j<=1000000; j+=2*i)
                B[j]=1;
        }
    for(; i<=1000000; i+=2)
        if(!B[i])
            p[++k]=i;

}