Cod sursa(job #2507694)

Utilizator LeCapataIustinian Serban LeCapata Data 10 decembrie 2019 18:25:43
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>
#include <cmath>
#define mod 9973
using namespace std;

ifstream in("ssnd.in");
ofstream out("ssnd.out");

bool ciur[1000005];
long long prim[78500];
int t, maxim=0, k=0;
long long sum, nr_div;

void ciur_E(long long n)
{
    for(int i=2; i<=n; i++)
        if(ciur[i]==0)
        {
            prim[++k]=i;
            for(int j=2*i; j<=n; j+=i)
                ciur[j]=1;
        }
}


void numar_div(int n,int m)
{
    int exp=0, inm=1;
    while(n%m==0)
    {
        exp++;
        inm*=m;
        n/=m;
    }

    nr_div*=(exp+1);
    int prod=(inm*m-1)/(m-1);
    sum*=prod;
}

int main()
{
    ciur_E(1000000);
    in>>t;

    while(t--)
    {
        long long x;
        in>>x;

        nr_div=1;
        sum=1;

        for(int j=1; prim[j]<=sqrt(x) && x>1; j++)
            if(x%prim[j]==0)
                numar_div(x,prim[j]);

        out<<nr_div<<" "<<sum%mod<<'\n';
    }
    in.close();
    out.close();
    return 0;
}