Cod sursa(job #2515277)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 28 decembrie 2019 11:50:40
Problema Suma si numarul divizorilor Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#define N 1000006
#define ll long long
#define M 9973
using namespace std;
ifstream in("ssnd.in");
ofstream out("ssnd.out");
ll p[N], v[N];
int main(){
    ll t,n,i,j,k=0,s,d,x;
    for(i=2; i<N; ++i){
        if(!v[i]){
            p[++k]=i;
            for(j=2*i; j<N; j+=i)
                v[j]=1;
        }
    }
    in>>t;
    while(t--){
        in>>n;
        i=s=d=1;
        while(p[i] && p[i]*p[i]<=n){
            k=1;
            j=p[i];
            while(n%p[i]==0){
                n/=p[i];
                ++k;
                j*=p[i];
            }
            d*=k;
            s=(s*((j-1)/(p[i]-1))%M)%M;
            ++i;
        }
        if(n!=1) d*=2, s=(s*(n+1))%M;
        out<<d<<" "<<s<<"\n";
    }
    return 0;
}