Cod sursa(job #2485562)

Utilizator andrei42Oandrei42O andrei42O Data 1 noiembrie 2019 19:07:29
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("ssnd.in");
ofstream g("ssnd.out");
const int MOD = 9973;
int64_t n, nr;
void desc(int64_t);
int main()
{
    f >> n;
    for(; n; n--)
    {
        f >> nr;
        desc(nr);
    }
    return 0;
}
void desc(int64_t x)
{
    int e = 1, sd = 1, actual_s = 0, actual_d = 1,  nd = 1, d = 3;
    if(x % 2 == 0)
    {
        while(x % 2 == 0)
        {
            e++;
            actual_d *= 2;
            actual_s = (actual_s + actual_d) % MOD;
            x /= 2;
        }
        nd  = nd * e;
    }
    sd = (sd + actual_s) % MOD;
    while(d * d <= x)
    {
        if(x % d == 0)
        {
            e = 1;
            actual_s = 0;
            actual_d = 1;
            while(x % d == 0)
            {
                e++;
                actual_d *= d;
                actual_s = (actual_s + actual_d) % MOD;
                x /= d;
            }
            nd *= e;
            sd = (sd + actual_s) % MOD;
        }
        d += 2;
    }
    if(x != 1)
    {
        sd = (sd * (1 + x)) % MOD;
        nd *= 2;
    }
    g << nd << ' ' << sd << '\n';
}