Cod sursa(job #3364495)

Utilizator reeaandreeaholtea andreea reeaandreea Data 4 septembrie 2026 00:55:13
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.47 kb

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("ssnd.in");
ofstream fout("ssnd.out");
bool ciur[1000005];
long long prime[1000005];
int main()
{
    int t;
    fin>>t;
    ciur[0]=1;
    ciur[1]=1;
    int nrprime=0;
    for(int i=2;i*i<1000000;i++)
        if(ciur[i]==0)
            for(int j=i*i;j<1000000;j+=i)
                {
                    ciur[j]=1;
                }
    for(int i=2;i<1000000;i++)
    {
        if(ciur[i]==0)
        {
            prime[nrprime]=i;
            nrprime++;
        }
    }
    
    
    for(int l=0;l<t;l++)
    {
        long long n;
        fin>>n;
        long long cnt=1;
        long long S=1;
        for(int i=0;i<nrprime&&prime[i]*prime[i]<=n;i++)
        {
            long long p=prime[i];
            int k=0;
            if(n%prime[i]==0)
            {
                while(n%p==0)
                {
                    n/=p;
                    k++;
                }
                long long suma=1;
                long long putere=1;
                for(int j=1;j<=k;j++)
                {
                putere=putere*p%9973;
                suma=(suma+putere)%9973;
                }
                cnt*= (k+1);
                S=S*suma%9973;
            }
            
        }
        if (n>1)
            {
                cnt*=2;
                S=S*(n+1)%9973;
            }
     
        fout<<cnt<<" "<<S<<"\n";
    }
    return 0;
}