Cod sursa(job #2398575)

Utilizator AndreiStrAndrei Stroici AndreiStr Data 5 aprilie 2019 19:09:55
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const long long N=1000000000000;
long long s;
long long n,a,x,pr[5364],p,e,rez,d;
long long putere(long long d,long long e)
{
    int64_t p=1;
    for(int i=1;i<=e;i++)
        p*=d;
    p--;
    p/=(d-1);
    return p;
}

int main()
{
    pr[0]=pr[1]=1;
    for(int i=4; i<=1000000; i+=2)
        pr[i]=1;
    for(int i=3; i<=1000; i+=2)
        if(!pr[i])
            for(int j=i*i; j<=1000000; j+=i)
                pr[j]=1;
    f>>n;
    for(int i=1; i<=n; i++)
    {
        f>>x;
        i=2;
        while(pr[i]<x)
        {
            d=pr[i];
           if(x%d==0&&pr[i]==0)
           {
               e=1;
               while(x%d==0)
               {
                   e++;
                   x/=d;
               }
               rez=rez*e;
               e--;
               p*=putere(d,e);
           }
        }
        if(x>1)
        {
            rez*=2;
            p*=(x*x-1)/(x-1);
        }
        g<<rez<<' '<<p<<'\n';
    }
    return 0;
}