Cod sursa(job #2231503)

Utilizator paul_danutDandelion paul_danut Data 14 august 2018 17:32:08
Problema Suma si numarul divizorilor Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <fstream>

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

using namespace std;

const int MAXN = 1000001;

bool a[MAXN];

int nr=0, i, j, t;

int main()
{

    for(i=2; i<MAXN; ++i)
    {
        a[i]=1;
    }

    for(i=2; i<MAXN; ++i)
    {
        if(a[i])
        {
            for(j=i;j<=MAXN/i; ++j)
            {
                a[i*j]=0;
            }
        }
    }

    long long x;
    long long sum;
    int d, val;

    f>>t;

    for(i=0; i < t; ++i)
    {
        f>>x;

        sum = 1;
        nr = 1;

        for(j=2; j<MAXN && x != 1; ++j)
        {
            if(a[j])
            {

                d = 0;
                val = 1;
                while( x % j == 0 )
                {

                    x = x / j;
                    d++;
                    val *= j;
                }

                if(d > 0)
                {
                    val *= j;
                    sum *= ((val - 1) / (j-1)) %  9973;
                }

                nr *= (d + 1);
            }
        }

        if(x != 1)
        {
            sum = (sum + x) %  9973;
        }

        g<< nr << ' ' << sum << '\n';
    }

    f.close();
    g.close();

    return 0;
}