Cod sursa(job #3227347)

Utilizator tudorororTudor-Mihail Danila tudororor Data 29 aprilie 2024 19:54:58
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("ssnd.in");
ofstream g("ssnd.out");

int putere(int x, int y)
{
    int p = 1;
    while(y)
    {
        if(y % 2)
            p *= x%9973;
        x *= x%9973;
        y /= 2;
    }
    return p;
}

void ssnd(int n)
{
    int d = 2, nrdiv = 1, sumdiv = 1;
    while(n > 1)
    {
        int p = 0;
        while(n % d == 0)
        {
            p++;
            n /= d;
        }
        if(p)
        {
            nrdiv *= (p + 1);
            sumdiv *= ((putere(d, p + 1)%9973 - 1)/(d - 1))%9973;
        }
        d++;
        if(d * d > n)
            d = n;
    }
    g << nrdiv << ' ' << sumdiv << '\n';
}

int main()
{
    int t;
    f >> t;
    while(t)
    {
        int n;
        f >> n;
        ssnd(n);
        t--;
    }
    return 0;
}