Cod sursa(job #2170795)

Utilizator PopeangaMihneaPopeanga Mihnea- Stefan PopeangaMihnea Data 15 martie 2018 09:47:26
Problema Suma si numarul divizorilor Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MOD=9973;
int x, t, k;
bool ciur[1000001];
int p[80000];

int main()
{
    for(int d=2; d<=1000000; ++d)
    {
        if(!ciur[d])
        {
            p[++k]=d;
            for(int i=2; i*d<=1000000; ++i) ciur[i*d]=1;
        }
    }
    fin>>t;
    for(int q=1; q<=t; ++q)
    {
        fin>>x;
        int i=1;
        int s=1;
        int nr=1;
        int m=1;
        while(p[i]*p[i]<=x && i<=k)
        {
            int e=0;
            m=p[i];
            while(x%p[i]==0)
            {
                x=x/p[i];
                ++e;
                m=m*p[i];
            }
            if(e>0)
            {
                s=(s*(m-1))/(p[i]-1)%MOD;
                nr=nr*(e+1);
            }
            ++i;
        }
        if(x>1)
        {
            nr=nr*2;
            s=(s*(x*x-1))/(x-1)%MOD;
        }
        fout<<nr<<" "<<s<<"\n";
    }
    return 0;
}