Cod sursa(job #2942542)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 19 noiembrie 2022 20:38:40
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
//ssnd
#include <bits/stdc++.h>
using namespace std;

ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");

int v[1000010];
int main()
{
    int i,j;
    bitset <1000010> bit;
    //1 compus 0 prim
    bit[0]=bit[1]=1;

    for(i=2;i<=1000000;i++)
    {
        if(i==0)
        {
            for(j=i*i;j<=1000000;j=j+i)
            {
               bit[j]=1;
            }
        }
    }
    j=1;
    v[j]=2;
    j++;
    for(i=3;i<=1000000;i=i+2)
    {
        if(bit[i]==0)
        {
            v[j]=i;
            j++;
        }
    }
    //cout<<v[1]<<" "<<v[2]<<" ";
    int t,e,d;
    long long n,sd=0,nd=1;
    fin>>t;
    for(i=1;i<=t;i++)
    {
        fin>>n;
        sd=1;
        nd=1;
        //cout<<n<<"\n";
        for(j=1;v[j]<=n;j++)
        {
            d=v[j];
            e=0;
            while(n%d==0)
            {
                e++;
                n=n/d;
            }
            sd=sd*((pow(d,e+1)-1)/(d-1));
            nd=nd*(e+1);
            //cout<<d<<" "<<e<<" "<<j<<"\n";
            //cout<<((pow(d,e+1)-1)/(d-1))<<"\n";
        }
        fout<<nd<<" "<<sd<<"\n";

    }

    return 0;
}