Cod sursa(job #2245187)

Utilizator Cezar211Popoveniuc Cezar Cezar211 Data 24 septembrie 2018 20:26:13
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
void solve(int x);
int suma_partiala(int f, int p);
int T, x;
int main()
{
    fin >> T;
    for( ;T--; )
    {
        fin >> x;
        solve(x);
    }


    return 0;
}

void solve(int x)
{
    int f=2, sdiv=1, nrdiv=1, p;
    while(f*f<=x)
    {
        p = 0;
        while(x%f==0)
        {
            p++;
            x/=f;
        }
        nrdiv*=(p+1);
        sdiv*=suma_partiala(f, p);
        f++;
    }
    if(x>1)
    {
        nrdiv*=2;
        sdiv*=(1+x);
    }
    fout << nrdiv << ' ' << sdiv << '\n';
}

int suma_partiala(int f, int p)
{
    int rez = 0, pow=1;
    for(int i=0; i<=p; i++)
    {
        rez+=pow;
        pow*=f;
    }
    return rez;
}