Cod sursa(job #432955)

Utilizator dead_knightTitei Paul Adrian dead_knight Data 3 aprilie 2010 00:18:45
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<fstream>
#include<cstdio>
#include<vector>
#include<cmath>
#define pb push_back
#define maxn 100004
#define infi 2100000000
using namespace std;

int n, ciur[maxn], modulo=9973;

int main()
{
    int i, j, T;
    ifstream fin("ssnd.in");
    freopen("ssnd.out", "w", stdout);
    for(i=2;i<=maxn;i++)
        ciur[i]=1;
    for(i=2;i<=maxn;i++)
        if(ciur[i])
        {
            for(j=i+i ; j<=maxn; j+=i)
                ciur[j] = 0;
        }
    fin>>T;
    while(T--)
    {
        int s=1, rez=1, nr;
        fin>>n;
        int copy=n;
        for(i=2;i*i<=n;i++)
            if(ciur[i] && n%i==0)
            {
                nr=0;//i de nr ori
                while(copy%i==0)
                    copy/=i, nr++;
                s*=((int(pow(double(i), nr+1)))-1)/(i-1);
                rez*=(nr+1);
            }
        if(ciur[n])
        {
            nr=1;
            i=n;
            s*=((int(pow(double(i), nr+1)))-1)/(i-1);
            rez*=(nr+1);
        }
        printf("%d %d\n", rez, s);
    }
    return 0;
}