Cod sursa(job #2174371)

Utilizator alexdumitrescuDumitrescu George Alex alexdumitrescu Data 16 martie 2018 11:46:58
Problema Suma si numarul divizorilor Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.23 kb
#include <fstream>
#define mod 9973
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout ("ssnd.out");
bool c[1000010];
int v[300000], i, j, d, p, k, n, e;
long long x, sum, nrd, s, fact;
void ciur()
{
    c[0]=c[1]=1;
    for(i=2;i*i<=1000000;i++)
        if(c[i]==0)
        for(j=i;j*i<=1000000;j++)
        c[i*j]=1;
    for(i=1;i<=1000000;i++)
        if(c[i]==0)
    {
        k++;
        v[k]=i;
    }
}
int main()
{
    fin >> n;
    ciur();
    for(i=1;i<=n;i++)
    {
        fin >> x;
        p=nrd=sum=1;
        d=v[1];
        while(d*d<=x&&p<=k)
        {
            d=v[p];
            if(x%d==0)
                {
                    s=1;
                    e=1;
                    fact=d;
                    while(x%d==0)
                    {
                        x=x/d;
                        e++;
                        s+=fact;
                        fact=fact*d;
                    }
                    nrd=nrd*e;
                    sum=(sum*(s%mod))%mod;
                }
            p++;
        }
        if(x!=1)
        {
            nrd=nrd*2;
            sum=sum*(x+1)%mod;
        }
        fout << nrd << ' ' << sum << '\n';
    }
    return 0;
}