Cod sursa(job #1374931)

Utilizator raduzxstefanescu radu raduzx Data 5 martie 2015 11:26:49
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <cmath>
using namespace std;
unsigned long long nrdivizori(unsigned long long a)
{
    unsigned long long d,s=1,k=0;
    while(a%2==0)
    {
        a/=2;
        k+=1;
    }
    s*=(k+1);
    d=3;
    while(a>1)
    {
        k=0;
        while(a%d==0)
        {
            a/=d;
            k+=1;
        }
        s*=(k+1);
    }
    return s;
}
unsigned long long suma(int a)
{
    unsigned long long d=2,s=1+a,k;
    k=sqrt(a);
    while(d<=k)
    {
        if(a%d==0)
        {
            s+=d;
            s+=a/d;
        }
        d+=1;
    }
    return s;
}
int main()
{
    ifstream f("ssnd.in");
    ofstream g("ssnd.out");
    unsigned long long n,a,i;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a;
        g<<nrdivizori(a)<<" ";
        g<<suma(a)<<'\n';
    }
    f.close();
    g.close();
    return 0;
}