Cod sursa(job #1354280)

Utilizator WhiteStormPopovici Stefan WhiteStorm Data 21 februarie 2015 18:59:54
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
//bool v[2000001];
const int Mod=9973;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
bool prim(long long unsigned x)
{
    if(x==0 || x==1) return 0;
    for(int i=2;i*i<=x;i++) if(x%i==0) return 0;
    return 1;
}
int main()
{
    long long unsigned i,j,n,x,s,k,baza,exp;
    /*v[0]=0; v[1]=0;
    for(i=2;i<=2000000;i++) v[i]=1;
    for(i=2;i*i<=2000000;i++) if(v[i])
        for(j=i*i;j<=2000000;j+=i) v[j]=0;*/
    in>>n;
    for(i=1;i<=n;i++)
    {
        in>>x;
        baza=2;
        s=1;
        k=1;
        while(baza*baza<=x)
        {
            if(x%baza==0)
            {
                exp=0;
                while(x%baza==0)
                {
                    exp++;
                    x/=baza;
                }
                s=s*(pow(baza,exp+1)-1)/(baza-1);
                if(s>Mod) s%=Mod;
                k*=(exp+1);
            }
            baza++;
        }
        if(x!=1)
        {
            s*=(x*x-1)/(x-1);
            if(s>Mod) s%=Mod;
            k*=2;
        }
        out<<k<<" "<<s<<"\n";
    }
    return 0;
}