Cod sursa(job #2351350)

Utilizator cosmin1972Nour Mihai-Cosmin cosmin1972 Data 22 februarie 2019 11:21:54
Problema Suma si numarul divizorilor Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 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+1];
int a[NMAX+1];

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=1;
            while(x%a[j]==0)
            {
                p++;
                y*=a[j];
                x/=a[j];
            }
            if(p>0)
            {
                s=s*((y*a[j]%MOD-1)%MOD/(a[j]-1)%MOD)%MOD;
                nr=nr*(p+1);
            }
        }
        if(x!=1)
        {
            s*=(x*x%MOD-1)%MOD/(x-1)%MOD;
            nr=nr*2;
        }
        out<<nr<<" "<<s<<'\n';
    }
    return 0;
}