Cod sursa(job #2719403)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 9 martie 2021 20:16:03
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>

#define MOD 9973
using namespace std;

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

const int vmax = 1e6;
typedef long long ll;
bool p[vmax + 5];
vector<int> prim;

void make_ciur()
{
    for(int i = 2; i <= vmax; ++i)
        if(!p[i])
        {
            prim.emplace_back(i);
            for(long long j = 1LL * i * i; j <= vmax; j += i)
                p[j] = 1;
        }
}

int main()
{
    make_ciur();

    int t;
    fin >> t;

    while(t--)
    {
        ll n;
        fin >> n;

        long long carD = 1, sumD = 1;
        for(int i = 0; i < (int)prim.size() && n > 1; ++i)
            if(n % prim[i] == 0)
            {
                int exp = 0;
                ll val = 1;
                while(n % prim[i] == 0){
                    ++exp;
                    val *= prim[i];
                    n /= prim[i];
                }

                carD *= (1 + exp);
                val *= prim[i];
                sumD = (sumD * ((val - 1) / (prim[i] - 1)) % MOD) % MOD;
            }
        fout << carD << ' ' << sumD << '\n';
    }
    return 0;
}