Cod sursa(job #2246012)

Utilizator XDDDDariusPetean Darius XDDDDarius Data 26 septembrie 2018 13:56:58
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
#include <math.h>
#define M 9973

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

using namespace std;
long long t,n;
void div(long long k,long long &a,long long &b)
{
    long long p=2,numar,nrdiv=1,prod=1,aux=1,ink=k;
    while(k>1 && p*p<=ink)
    {
        numar=0;
        aux=p;
        while(k%p==0)
        {
            numar++;
            k/=p;
            aux*=p;
        }
        if(k%p)
        {
            nrdiv=(nrdiv*(numar+1))%M;
            prod=(prod* (1LL*((((aux-1)))/(p-1))))%M;

        }
        p++;
    }
    if(k>1)
    {
        nrdiv*=2;
        prod*=(k*k-1)/(k-1);
    }
    a=nrdiv%M;
    b=prod%M;

}


int main()
{
    in>>n;
    for(int i=0; i<n; i++)
    {
        long long a,b;
        in>>t;
        div(t,a,b);
        out<<a<<" "<<b<<"\n";
    }
    return 0;
}