Cod sursa(job #1909537)

Utilizator andreicontorandrei contor andreicontor Data 7 martie 2017 13:01:20
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<cstdio>
#include<cmath>
using namespace std;
int i,n,x;
int nr(int x)
{
    int y=x,p=0,d,nr=1;
    while(y%2==0)
    {
        y=y/2;
        p++;
    }
    nr=nr*(p+1);
    d=3;
    while(y>1)
    {
        p=0;
        while(y%d==0)
        {
            y=y/d;
            p++;
        }
        nr=nr*(p+1);
        d=d+2;
    }
    return nr;
}
int suma(int x)
{
    int s=1,p=0,d,y=x;
    while(y%2==0)
    {
        p++;
        y=y/2;
    }
    if(p>0)
        s=s*(pow(2,p+1)-1);
    d=3;
    while(y>1)
    {
        p=0;
        while(y%d==0)
        {
            p++;
            y=y/d;
        }
        if(p>0)
            s=s*(pow(d,p+1)-1)/(d-1);
        d=d+2;
    }
    return s;
}
int main()
{
    freopen("ssnd.in","r",stdin);
    freopen("ssnd.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&x);
        printf("%d %d\n",nr(x),suma(x));
    }
    return 0;
}