Cod sursa(job #2855049)

Utilizator biancalautaruBianca Lautaru biancalautaru Data 22 februarie 2022 07:41:32
Problema Suma si numarul divizorilor Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>
#define mod 9973
using namespace std;
ifstream fin("ssnd.in");
ofstream fout("ssnd.out");
long long t,n,x,i,j,k,nr,s,e,p[100001];
bool ciur[1000001];

int putere(int a,int n) {
    int p=1;
    while (n!=0) {
        if (n%2!=0)
            p=1LL*p*a%mod;
        a=1LL*a*a%mod;
        n/=2;
    }
    return p;
}

int main() {
    k=0;
    for (i=2;i<=1000000;i++)
        if (ciur[i]==0) {
            p[++k]=i;
            for (j=2*i;j<=1000000;j+=i)
                ciur[j]=1;
        }
    fin>>t;
    while (t--) {
        fin>>n;
        x=n;
        nr=1;
        s=1;
        for (i=1;1LL*p[i]*p[i]<=n && x!=1;i++)
            if (x%p[i]==0) {
                e=0;
                while (x%p[i]==0) {
                    e++;
                    x/=p[i];
                }
                nr*=(e+1);
                s=1LL*s*(putere(p[i],e+1)-1)%mod*putere(p[i]-1,mod-2)%mod;
            }
        if (x!=1) {
            nr*=2;
            s=1LL*s*(x+1)%mod;
        }
        fout<<nr<<" "<<s<<"\n";
    }
    return 0;
}