Cod sursa(job #2352448)

Utilizator cosmin1972Nour Mihai-Cosmin cosmin1972 Data 23 februarie 2019 12:31:37
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX=1000000,MOD=9973;
bool v[NMAX+5];
long long a[NMAX+5];

int main()
{
    long long n,k=1;
    in>>n;
    for(int i=2; i<=NMAX; i++)
    {
        if(v[i]==0)
        {
            a[k]=i;
            k++;
            for(int j=i+i; j<=NMAX; j+=i)
            {
                v[j]=1;
            }
        }
    }
    for(int i=1; i<=n; i++)
    {
        long long x,s=1,nr=1;
        in>>x;
        for(int j=1; a[j]*a[j]<=x; j++)
        {
            long long p=0,y=a[j];
            while(x%a[j]==0)
            {
                p++;
                y=y*a[j];
                x/=a[j];
            }
            if(p>0)
            {
                s=s*(y-1)/(a[j]-1)%MOD;
                nr=nr*(p+1);
            }
        }
        if(x!=1)
        {
            s=s*(x*x-1)/(x-1)%MOD;
            nr=nr*2;
        }
        out<<nr<<" "<<s<<'\n';
    }
    return 0;
}