Cod sursa(job #2118130)

Utilizator HumikoPostu Alexandru Humiko Data 30 ianuarie 2018 09:22:26
Problema Suma si numarul divizorilor Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>
#define MOD 9973

using namespace std;

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

bool frecv[1000000];
int ciur[1000000], cate;

void ciurul (int lim)
{
    frecv[1] = 1;
    for (int i = 3; i <= sqrt(lim); ++i )
        if ( !frecv[i] )
            for (int j = i*2; j <= lim; j+= i )
                frecv[j] = 1;
    for (int i = 1; i <= lim; ++i )
        if ( !frecv[i] )
            ciur[cate++] = i;
}

int main()
{
    ciurul(1000000);
    int t;
    fin>>t;
    while (t--)
    {
        long long n, putere, suma = 1;
        fin>>n;
        long long div = 1;
        for (int i = 0; ciur[i]*ciur[i] <= n && n > 1; ++i )
        {
            int k = 1;
            putere = ciur[i];
            while ( n%ciur[i] == 0 )
            {
                ++k;
                n /= ciur[i];
                putere *= ciur[i];
            }
            div *= k;
            suma = suma*(putere-1)/(ciur[i]-1)%MOD;
        }
        if (n > 1)
        {
            div = 2*div%MOD;
            suma = suma*(n+1)%MOD;
        }
        fout<<div<<" "<<suma<<'\n';
    }
}