Cod sursa(job #3301775)

Utilizator LucaWalucaLuca Munteanu LucaWaluca Data 29 iunie 2025 20:24:11
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream cin("ssnd.in");
ofstream cout("ssnd.out");
int v[100005],ciur[1000005],k;
long long n,nr,s,nrdiv;
void er()
{
    ciur[0]=ciur[1]=1;
    for(int i=2;i<=1000;i++)
        for(int j=i*i;j<=1000000;j+=i)
            ciur[j]=1;
    for(int i=1;i<=1000000;i++)
        if(!ciur[i])
            v[++k]=i;
}
int main()
{
    er();
    cin>>n;
    //cout<<v[1]<<" "<<v[2]<<" ";
    while(n--)
    {
        long long cnt=0,pelm;
        cin>>nr;
        s=nrdiv=1;
        for(int i=1;1LL*v[i]*v[i]<=nr;i++)
        {
            if(nr%v[i]==0)
            {
                cnt=0;
                pelm=1;
                while(nr%v[i]==0)
                {
                    cnt++;
                    pelm*=v[i];
                    nr/=v[i];
                }
                //cout<<cnt<<" ";
                nrdiv*=(cnt+1);
                s=s*(pelm*v[i]-1)/(v[i]-1)%9973;
            }
        }
        if(nr>1)
        {
            nrdiv*=2;
            s+=s*nr;
            s%=9973;
        }
        cout<<nrdiv<<" "<<s<<"\n";
    }
    return 0;
}