Cod sursa(job #1352372)

Utilizator WhiteStormPopovici Stefan WhiteStorm Data 21 februarie 2015 12:26:57
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 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(x!=1)
        {
            if(x%baza==0)
            {
                bool temp = v[baza];
                if(baza<=2000000 && v[baza])
                {
                   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++;
        }
        out<<k<<" "<<s<<"\n";
    }
    return 0;
}