Cod sursa(job #2147163)

Utilizator mihaidumitrescuMIHAI DUMITRESCU mihaidumitrescu Data 28 februarie 2018 15:39:54
Problema Suma si numarul divizorilor Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;

const int MOD = 9973;

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

long long N;
int T;

void solve() {
    fin >> N;

    int sum = 1, nrd = 1;

    for(int d = 2; N > 1; ++d) {
        if(1LL*d*d > N) break;
        if(N % d) continue;

        int nrc = 0;
        int act_prod = 1, act_sum = 1;

        while(N % d == 0) {
            act_prod *= d;
            act_prod %= MOD;

            act_sum += act_prod;
            if(act_sum > MOD)
                act_sum -= MOD;

            N /= d;
            ++nrc;
        }

        sum *= act_sum;
        sum %= MOD;

        nrd *= (nrc+1);
    }

    if(N != 1) {
        nrd *= 2;
        sum = (1LL*sum*(N+1) % MOD);
    }

    fout << nrd << " " << sum << "\n";
}

int main()
{
    for(fin >> T; T; --T)
        solve();
}