Cod sursa(job #2147335)

Utilizator MentaPopa Marius-Catalin Menta Data 28 februarie 2018 17:42:35
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <math.h>

#define lel 1000001


using namespace std;

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

const int mod = 9973;

int t;
long long prod,nr;

int ciur[lel];

void prime()
{
    int i,j;
    for(i=2;i<=lel; i++)
        ciur[i] = 1;
    for(i=2;i<=lel;i++)
        if(ciur[i])
        for(j=i+i;j<=lel;j+=i)
            ciur[j] = 0;
}
int main()
{
    f>>t;
    int i,j,n,x;
    int d,p;
    prime();

    while(t--)
    {
        f>>n;
        prod = 1;
        nr = 1;
        for(i=2;i*i<=n;i++)
            if(ciur[i])
            {
                if( n % i ==0)
                {
                    p = 0;
                    x = n;
                    d = i;
                    while( x % d == 0)
                    {
                        ++p;
                        x/=d;
                    }
                    nr = nr*(p+1);
                    prod = (prod* (( pow(d,p+1)-1)/(d-1)));
                    prod %= mod;

                }
                else
                {
                    nr = 2;
                    prod = n+1;
                }
            }
        g<<nr<< " "<<prod << "\n";
    }
}