Cod sursa(job #3302964)

Utilizator nopreanOprean Natasha noprean Data 12 iulie 2025 14:19:15
Problema Suma si numarul divizorilor Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
const int MOD=9973;
int t;
long long n;
bool ciur[1000001];
int prim[1000001];
int k=0;
void CalculCiur()
{
    ciur[0]=1;
    ciur[1]=1;
    for(long long i=2;i*i<=1000000;i++)
    {
        if(ciur[i]==0)
        {
            prim[++k]=i;
            for(long long j=i*i;j<=1000000;j+=i)
                ciur[j]=1;
        }
    }
}
int main()
{
    CalculCiur();
    fin>>t;
    for(int i=1;i<=t;i++)
    {
        long long sumaDiv=1;
        long long nrDiv=1;
        fin>>n;
        for(int f=1;1LL*prim[f]*prim[f]<=n&&f<=k;f++)
        {
            if(n%prim[f]==0)
            {
                int e=0;
                long long prod=1;
                while(n%prim[f]==0)
                {
                    e++;
                    n/=prim[f];
                    prod*=prim[f];
                }
                prod*=prim[f];
                nrDiv*=(e+1);
                sumaDiv=(sumaDiv*((prod-1)/(prim[f]-1)))%MOD;
            }
        }
        if(n>1)
        {
            nrDiv*=2;
            sumaDiv=(sumaDiv*(n+1))%MOD;
        }
        fout<<nrDiv<<" "<<sumaDiv<<'\n';
    }

    return 0;
}