Cod sursa(job #3038631)

Utilizator cattyAninisCatrinel catty Data 27 martie 2023 16:41:08
Problema Suma si numarul divizorilor Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
#define L unsigned long long
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
int n,k,v[78499],t;
L x,d,p,card=1,sum=1;
bitset <500001> pq;
int main()
{
    v[++t]=2;
    for(int i=3;i<=1000000;i+=2)
        if(pq[i/2]==0)
    {
        v[++t]=i;
        for(L j=i;j*i<=1000000;j+=2)
            pq[i*j/2]=1;
    }
    in>>n;
    for(int i=1; i<=n; ++i)
    {
        in>>x;
        d=v[1],k=1;
        sum=1,card=1;
        while(x>1)
        {
            L l=d;
            for(p=0; x%d==0; x/=d)
                ++p,l*=d;
            card*=(p+1);
            sum*=(l-1)/(d-1),sum%=9973;
            ++k,d=v[k];
            if(x>1 && d*d>x)
                d=x;
        }
        out<<card<<' '<<sum<<'\n';
    }
}