Cod sursa(job #2515283)

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