Cod sursa(job #3354548)

Utilizator FRD233Fodor Rares-Costin FRD233 Data 18 mai 2026 21:36:39
Problema Suma si numarul divizorilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <bits/stdc++.h>
using namespace std;
#define MOD 9973
ifstream f("ssnd.in");
ofstream g("ssnd.out");
bool c[2000001];
int prime[1000001];
int k;
int n,x,nrdiv,sumdiv;
int put(int a,int n)
{   int p=1;
    for(int k=1;k<=n;k<<=1)
    {   if(n&k) p=p*a%MOD;
        a=a*a%MOD;
    }
    return p;
}
bool ciur()
{   c[0]=c[1]=1;
    for(int i=2;i<=1e6;i++)
        if(c[i]==0)
            for(int j=2;i*j<=1e6;j++) c[i*j]=1;
    for(int i=1;i<=1e6;i++)
        if(c[i]==0) prime[++k]=i;
}
void descompunere(int x,int &nrdiv, int &sumdiv)
{   int d=1,cn=1;
    while(x>1)
    {   int p=0;
        while(x%prime[d]==0)
        {   x/=prime[d];
            p++;
        }
        nrdiv*=(p+1);
        long long p_sum=1;
        long long p_pow=1;
        for(int i=1;i<=p;i++)
        {   p_pow=(p_pow*prime[d])%MOD;
            p_sum=(p_sum+p_pow)%MOD;
        }
        sumdiv=(sumdiv*p_sum)%MOD;
        d++;
    }
    if(x>1)
    {   nrdiv=nrdiv*2;
        sumdiv=(sumdiv*(1+x%MOD))%MOD;
    }
}
int main()
{   cin>>n;
    ciur();
    while(n--)
    {   cin>>x;
        nrdiv=1,sumdiv=1;
        descompunere(x,nrdiv,sumdiv);
        cout<<nrdiv<<" "<<sumdiv<<'\n';
    }
    return 0;
}