Cod sursa(job #2118451)

Utilizator HumikoPostu Alexandru Humiko Data 30 ianuarie 2018 17:48:04
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <bits/stdc++.h>
#define MOD 9973

using namespace std;

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

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

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

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);
    ciurE();
    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';
    }
}