Cod sursa(job #2423339)

Utilizator blotucosmincosmin blotucosmin Data 21 mai 2019 09:11:52
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>
#define MOD 9973
using namespace std;
long long i, n, x, d, nrdiv, sumdiv, val, fm;
long long lgput(long long n, long long p)
{
    long long r = 1;
    while(p)
    {
        if(p % 2 == 1) r = r * n;
        n = n * n;
        p /= 2;
    }
    return r;
}
int main()
{
    ifstream f("ssnd.in");
    ofstream g("ssnd.out");
    f >> n;
    while(n --)
    {
        f >> x;
        d = 2;
        nrdiv = sumdiv = 1;
        do
        {
            fm = 0;
            while(x % d == 0)
            {
                x = x / d;
                fm ++;
            }
            if(fm > 0)
            {
                nrdiv = nrdiv * (fm + 1);
                for(val = 1, i = 1; i <= fm + 1; i ++)
                    val = val * d;
                sumdiv = (sumdiv * (val - 1) / (d - 1) ) % MOD;
            }
            d ++;
            if(d * d > x && x > 1)
            {
                nrdiv = nrdiv * 2;
                sumdiv = (sumdiv * (x * x - 1) / (x - 1)) % MOD;
                x = 1;
            }
        }
        while(x > 1);
        g << nrdiv << " " << sumdiv << "\n";
    }
    return 0;
}